mirror of
https://github.com/tiyn/wiki.git
synced 2025-04-19 22:17:45 +02:00
Compare commits
No commits in common. "8d60e297c1671158e605a16e7e7613425da6ee9c" and "fdf05f68faa37de2f95da1e6ac431c243d8897f7" have entirely different histories.
8d60e297c1
...
fdf05f68fa
@ -42,7 +42,7 @@ docker-compose up -d
|
||||
|
||||
## .env
|
||||
|
||||
```sh
|
||||
```txt
|
||||
TZ="Europe/Berlin"
|
||||
|
||||
PT_INITIAL_ROOT_PASSWORD=<root password>
|
||||
|
@ -12,16 +12,6 @@ Docker container.
|
||||
|
||||
Create the files `rebuild.sh` and `docker-compose.yml` at the same place.
|
||||
Change the settings according to your needs and run `./rebuild.sh` afterwards.
|
||||
It is recommended to use the versionnumber instead of `:latest` for both the MariaDB and the
|
||||
NextCloud image like the following example.
|
||||
|
||||
```
|
||||
nextcloud:22
|
||||
mariadb:9
|
||||
```
|
||||
|
||||
Make sure to substitute all the occurences of the `:latest` tag accordingly.
|
||||
Updating has to be done manually so nothing breaks.
|
||||
|
||||
## Volumes
|
||||
|
||||
@ -60,7 +50,7 @@ volumes:
|
||||
|
||||
services:
|
||||
db:
|
||||
image: mariadb:latest
|
||||
image: mariadb
|
||||
restart: always
|
||||
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
|
||||
volumes:
|
||||
@ -72,7 +62,7 @@ services:
|
||||
- MYSQL_USER=nextcloud
|
||||
|
||||
app:
|
||||
image: nextcloud:latest
|
||||
image: nextcloud
|
||||
restart: always
|
||||
ports:
|
||||
- 8080:80
|
||||
@ -91,4 +81,5 @@ volumes:
|
||||
driver: local
|
||||
nextcloud:
|
||||
driver: local
|
||||
|
||||
```
|
||||
|
@ -1,251 +0,0 @@
|
||||
# vabene1111 - recipes
|
||||
|
||||
This is a [Docker](/wiki/docker.md) container for a [TandoorRecipes](/wiki/tandoor_recipes.md)
|
||||
server.
|
||||
The official container and documentation was made by
|
||||
[TandoorRecipes](https://github.com/TandoorRecipes/recipes).
|
||||
This docker-rebuild is made up by a `docker-compose.yml` file.
|
||||
In addition to the main container you need to connect a
|
||||
[postgres container](/wiki/docker/postgres.md) to it.
|
||||
|
||||
## Set-up
|
||||
|
||||
Create the files `rebuild.sh`, `.env` and `docker-compose.yml` at the same
|
||||
place.
|
||||
Make sure to set `SECRET_KEY` and `POSTGRES_PASSWORD`.
|
||||
Change the settings according to your needs and run `./rebuild.sh` afterwards.
|
||||
|
||||
## Ports
|
||||
|
||||
Set the following ports in the `ports:` section.
|
||||
|
||||
| Container Port | Recommended outside port | Protocol | Description |
|
||||
| -------------- | ------------------------ | -------- | ----------- |
|
||||
| `8083` | `8080` | TCP | WebUI |
|
||||
|
||||
## Volumes
|
||||
|
||||
Set the following volumes with the -v tag.
|
||||
|
||||
| Outside mount/volume name | Container mount | Description |
|
||||
| ------------------------- | -------------------------- | ------------------------ |
|
||||
| `staticfiles` | `/opt/recipes/staticfiles` | storage for static files |
|
||||
| `mediafiles` | `/opt/recipes/mediafiles` | storage for media files |
|
||||
|
||||
## rebuild.sh
|
||||
|
||||
```sh
|
||||
#!/bin/sh
|
||||
docker-compose down
|
||||
docker pull vabene1111/recipes:latest
|
||||
docker pull postgres:15-alpine
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## .env
|
||||
|
||||
```sh
|
||||
# only set this to true when testing/debugging
|
||||
# when unset: 1 (true) - dont unset this, just for development
|
||||
DEBUG=0
|
||||
SQL_DEBUG=0
|
||||
DEBUG_TOOLBAR=0
|
||||
# Gunicorn log level for debugging (default value is "info" when unset)
|
||||
# (see https://docs.gunicorn.org/en/stable/settings.html#loglevel for available settings)
|
||||
# GUNICORN_LOG_LEVEL="debug"
|
||||
|
||||
# HTTP port to bind to
|
||||
# TANDOOR_PORT=8080
|
||||
|
||||
# hosts the application can run under e.g. recipes.mydomain.com,cooking.mydomain.com,...
|
||||
ALLOWED_HOSTS=*
|
||||
|
||||
# random secret key, use for example `base64 /dev/urandom | head -c50` to generate one
|
||||
# ---------------------------- REQUIRED -------------------------
|
||||
SECRET_KEY=<secret_key>
|
||||
# ---------------------------------------------------------------
|
||||
|
||||
# your default timezone See https://timezonedb.com/time-zones for a list of timezones
|
||||
TIMEZONE=Europe/Berlin
|
||||
|
||||
# add only a database password if you want to run with the default postgres, otherwise change settings accordingly
|
||||
DB_ENGINE=django.db.backends.postgresql
|
||||
# DB_OPTIONS= {} # e.g. {"sslmode":"require"} to enable ssl
|
||||
POSTGRES_HOST=db_recipes
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_USER=djangouser
|
||||
# ---------------------------- REQUIRED -------------------------
|
||||
POSTGRES_PASSWORD=<password>
|
||||
# ---------------------------------------------------------------
|
||||
POSTGRES_DB=djangodb
|
||||
|
||||
# database connection string, when used overrides other database settings.
|
||||
# format might vary depending on backend
|
||||
# DATABASE_URL = engine://username:password@host:port/dbname
|
||||
|
||||
# the default value for the user preference 'fractions' (enable/disable fraction support)
|
||||
# default: disabled=0
|
||||
FRACTION_PREF_DEFAULT=0
|
||||
|
||||
# the default value for the user preference 'comments' (enable/disable commenting system)
|
||||
# default comments enabled=1
|
||||
COMMENT_PREF_DEFAULT=1
|
||||
|
||||
# Users can set a amount of time after which the shopping list is refreshed when they are in viewing mode
|
||||
# This is the minimum interval users can set. Setting this to low will allow users to refresh very frequently which
|
||||
# might cause high load on the server. (Technically they can obviously refresh as often as they want with their own scripts)
|
||||
SHOPPING_MIN_AUTOSYNC_INTERVAL=5
|
||||
|
||||
# Default for user setting sticky navbar
|
||||
# STICKY_NAV_PREF_DEFAULT=1
|
||||
|
||||
# If base URL is something other than just / (you are serving a subfolder in your proxy for instance http://recipe_app/recipes/)
|
||||
# Be sure to not have a trailing slash: e.g. '/recipes' instead of '/recipes/'
|
||||
# SCRIPT_NAME=/recipes
|
||||
|
||||
# If staticfiles are stored at a different location uncomment and change accordingly, MUST END IN /
|
||||
# this is not required if you are just using a subfolder
|
||||
# This can either be a relative path from the applications base path or the url of an external host
|
||||
# STATIC_URL=/static/
|
||||
|
||||
# If mediafiles are stored at a different location uncomment and change accordingly, MUST END IN /
|
||||
# this is not required if you are just using a subfolder
|
||||
# This can either be a relative path from the applications base path or the url of an external host
|
||||
# MEDIA_URL=/media/
|
||||
|
||||
# Serve mediafiles directly using gunicorn. Basically everyone recommends not doing this. Please use any of the examples
|
||||
# provided that include an additional nxginx container to handle media file serving.
|
||||
# If you know what you are doing turn this back on (1) to serve media files using djangos serve() method.
|
||||
# when unset: 1 (true) - this is temporary until an appropriate amount of time has passed for everyone to migrate
|
||||
GUNICORN_MEDIA=0
|
||||
|
||||
# GUNICORN SERVER RELATED SETTINGS (see https://docs.gunicorn.org/en/stable/design.html#how-many-workers for recommended settings)
|
||||
# GUNICORN_WORKERS=1
|
||||
# GUNICORN_THREADS=1
|
||||
|
||||
# S3 Media settings: store mediafiles in s3 or any compatible storage backend (e.g. minio)
|
||||
# as long as S3_ACCESS_KEY is not set S3 features are disabled
|
||||
# S3_ACCESS_KEY=
|
||||
# S3_SECRET_ACCESS_KEY=
|
||||
# S3_BUCKET_NAME=
|
||||
# S3_REGION_NAME= # default none, set your region might be required
|
||||
# S3_QUERYSTRING_AUTH=1 # default true, set to 0 to serve media from a public bucket without signed urls
|
||||
# S3_QUERYSTRING_EXPIRE=3600 # number of seconds querystring are valid for
|
||||
# S3_ENDPOINT_URL= # when using a custom endpoint like minio
|
||||
# S3_CUSTOM_DOMAIN= # when using a CDN/proxy to S3 (see https://github.com/TandoorRecipes/recipes/issues/1943)
|
||||
|
||||
# Email Settings, see https://docs.djangoproject.com/en/3.2/ref/settings/#email-host
|
||||
# Required for email confirmation and password reset (automatically activates if host is set)
|
||||
# EMAIL_HOST=
|
||||
# EMAIL_PORT=
|
||||
# EMAIL_HOST_USER=
|
||||
# EMAIL_HOST_PASSWORD=
|
||||
# EMAIL_USE_TLS=0
|
||||
# EMAIL_USE_SSL=0
|
||||
# email sender address (default 'webmaster@localhost')
|
||||
# DEFAULT_FROM_EMAIL=
|
||||
# prefix used for account related emails (default "[Tandoor Recipes] ")
|
||||
# ACCOUNT_EMAIL_SUBJECT_PREFIX=
|
||||
|
||||
# allow authentication via reverse proxy (e.g. authelia), leave off if you dont know what you are doing
|
||||
# see docs for more information https://docs.tandoor.dev/features/authentication/
|
||||
# when unset: 0 (false)
|
||||
REVERSE_PROXY_AUTH=0
|
||||
|
||||
# Default settings for spaces, apply per space and can be changed in the admin view
|
||||
# SPACE_DEFAULT_MAX_RECIPES=0 # 0=unlimited recipes
|
||||
# SPACE_DEFAULT_MAX_USERS=0 # 0=unlimited users per space
|
||||
# SPACE_DEFAULT_MAX_FILES=0 # Maximum file storage for space in MB. 0 for unlimited, -1 to disable file upload.
|
||||
# SPACE_DEFAULT_ALLOW_SHARING=1 # Allow users to share recipes with public links
|
||||
|
||||
# allow people to create accounts on your application instance (without an invite link)
|
||||
# when unset: 0 (false)
|
||||
# ENABLE_SIGNUP=0
|
||||
|
||||
# If signup is enabled you might want to add a captcha to it to prevent spam
|
||||
# HCAPTCHA_SITEKEY=
|
||||
# HCAPTCHA_SECRET=
|
||||
|
||||
# if signup is enabled you might want to provide urls to data protection policies or terms and conditions
|
||||
# TERMS_URL=
|
||||
# PRIVACY_URL=
|
||||
# IMPRINT_URL=
|
||||
|
||||
# enable serving of prometheus metrics under the /metrics path
|
||||
# ATTENTION: view is not secured (as per the prometheus default way) so make sure to secure it
|
||||
# trough your web server (or leave it open of you dont care if the stats are exposed)
|
||||
# ENABLE_METRICS=0
|
||||
|
||||
# allows you to setup OAuth providers
|
||||
# see docs for more information https://docs.tandoor.dev/features/authentication/
|
||||
# SOCIAL_PROVIDERS = allauth.socialaccount.providers.github, allauth.socialaccount.providers.nextcloud,
|
||||
|
||||
# Should a newly created user from a social provider get assigned to the default space and given permission by default ?
|
||||
# ATTENTION: This feature might be deprecated in favor of a space join and public viewing system in the future
|
||||
# default 0 (false), when 1 (true) users will be assigned space and group
|
||||
# SOCIAL_DEFAULT_ACCESS = 1
|
||||
|
||||
# if SOCIAL_DEFAULT_ACCESS is used, which group should be added
|
||||
# SOCIAL_DEFAULT_GROUP=guest
|
||||
|
||||
# Django session cookie settings. Can be changed to allow a single django application to authenticate several applications
|
||||
# when running under the same database
|
||||
# SESSION_COOKIE_DOMAIN=.example.com
|
||||
# SESSION_COOKIE_NAME=sessionid # use this only to not interfere with non unified django applications under the same top level domain
|
||||
|
||||
# by default SORT_TREE_BY_NAME is disabled this will store all Keywords and Food in the order they are created
|
||||
# enabling this setting makes saving new keywords and foods very slow, which doesn't matter in most usecases.
|
||||
# however, when doing large imports of recipes that will create new objects, can increase total run time by 10-15x
|
||||
# Keywords and Food can be manually sorted by name in Admin
|
||||
# This value can also be temporarily changed in Admin, it will revert the next time the application is started
|
||||
# This will be fixed/changed in the future by changing the implementation or finding a better workaround for sorting
|
||||
# SORT_TREE_BY_NAME=0
|
||||
# LDAP authentication
|
||||
# default 0 (false), when 1 (true) list of allowed users will be fetched from LDAP server
|
||||
#LDAP_AUTH=
|
||||
#AUTH_LDAP_SERVER_URI=
|
||||
#AUTH_LDAP_BIND_DN=
|
||||
#AUTH_LDAP_BIND_PASSWORD=
|
||||
#AUTH_LDAP_USER_SEARCH_BASE_DN=
|
||||
#AUTH_LDAP_TLS_CACERTFILE=
|
||||
#AUTH_LDAP_START_TLS=
|
||||
|
||||
# Enables exporting PDF (see export docs)
|
||||
# Disabled by default, uncomment to enable
|
||||
# ENABLE_PDF_EXPORT=1
|
||||
|
||||
# Recipe exports are cached for a certain time by default, adjust time if needed
|
||||
# EXPORT_FILE_CACHE_DURATION=600
|
||||
```
|
||||
|
||||
## docker-compose.yml
|
||||
|
||||
```yml
|
||||
version: "3"
|
||||
services:
|
||||
web_recipes:
|
||||
restart: unless-stopped
|
||||
image: vabene1111/recipes
|
||||
ports:
|
||||
- 8083:8080
|
||||
env_file:
|
||||
- ./.env
|
||||
volumes:
|
||||
- staticfiles:/opt/recipes/staticfiles
|
||||
- mediafiles:/opt/recipes/mediafiles
|
||||
depends_on:
|
||||
- db_recipes
|
||||
|
||||
db_recipes:
|
||||
restart: unless-stopped
|
||||
image: postgres:15-alpine
|
||||
volumes:
|
||||
- postgresql:/var/lib/postgresql/data
|
||||
env_file:
|
||||
- ./.env
|
||||
|
||||
volumes:
|
||||
postgresql:
|
||||
staticfiles:
|
||||
mediafiles:
|
||||
```
|
203
wiki/firefox.md
203
wiki/firefox.md
@ -3,6 +3,29 @@
|
||||
[Firefox](https://www.mozilla.org/en-US/Firefox) is a free and open-source web
|
||||
browser.
|
||||
|
||||
## Configuration
|
||||
|
||||
Firefox has many possible settings and precerences.
|
||||
This section addresses possible settings and preferences for specific use cases.
|
||||
|
||||
### Telemetry
|
||||
|
||||
Telemetry is the remote measurement and transmission of data.
|
||||
To change the telemetry of Firefox navigate to `about:telemetry` and click the
|
||||
options to toggle between enabled and disabled.
|
||||
|
||||
### Enable/Disable Scrolling
|
||||
|
||||
On Linux distributions auto scroll is disabled by default.
|
||||
This means that you cant click the middle mouse button to use it for scrolling.
|
||||
To enable it go into the preferences and check `Use autoscrolling`.
|
||||
|
||||
### Enable/Disable Sponsorings
|
||||
|
||||
Sponsorings are embedded ads in Firefox.
|
||||
After navigating to `about:config` enabling and disabling of sponsorings can be done at
|
||||
`browser.newtabpage.activity-stream.showSponsored`.
|
||||
|
||||
## Usage
|
||||
|
||||
The following section addresses different uses and add-ons of Firefox.
|
||||
@ -14,7 +37,7 @@ including bookmarks smaller.
|
||||
After navigating to `about:config` the configuration can be done at
|
||||
`browser.compactmode.show`.
|
||||
|
||||
### List of useful Firefox add-ons
|
||||
## List of useful Firefox add-ons
|
||||
|
||||
Following is a list of useful Firefox add-ons.
|
||||
They can be removed and configured under `about:config`.
|
||||
@ -65,7 +88,7 @@ They can be removed and configured under `about:config`.
|
||||
- [Vim Vixen](https://addons.mozilla.org/en-GB/Firefox/addon/vim-vixen) enables
|
||||
vim movement for Firefox.
|
||||
|
||||
### Add a new search engine
|
||||
## Add a new search engine
|
||||
|
||||
You can add a new search engine with the add-on `Add custom search engine`.
|
||||
Make sure to replace `<url to search engine>` with the according url.
|
||||
@ -73,179 +96,3 @@ Make sure to replace `<url to search engine>` with the according url.
|
||||
It is possible to add it without an add-on.
|
||||
Navigate to the search engine and click the `...` in the address bar.
|
||||
Then click `Add Search Engine`
|
||||
|
||||
### Telemetry
|
||||
|
||||
Telemetry is the remote measurement and transmission of data.
|
||||
To change the telemetry of Firefox navigate to `about:telemetry` and click the
|
||||
options to toggle between enabled and disabled.
|
||||
|
||||
### Scrolling
|
||||
|
||||
On Linux distributions auto scroll is disabled by default.
|
||||
This means that you cant click the middle mouse button to use it for scrolling.
|
||||
To enable it go into the preferences and check `Use autoscrolling`.
|
||||
|
||||
### Sponsorings
|
||||
|
||||
Sponsorings are embedded ads in Firefox.
|
||||
After navigating to `about:config` enabling and disabling of sponsorings can be done at
|
||||
`browser.newtabpage.activity-stream.showSponsored`.
|
||||
|
||||
### Disable Unneeded Services and Features
|
||||
|
||||
The following section is based on the website
|
||||
[privacy-handbuch.de](https://www.privacy-handbuch.de/handbuch_21n.htm) which discusses ways to
|
||||
disable often unneeded features in Firefox.
|
||||
The way to disable these services is by setting values in `about:config`.
|
||||
|
||||
To disable the Pocket expansion set the following config.
|
||||
|
||||
```txt
|
||||
extensions.pocket.enabled = false
|
||||
```
|
||||
|
||||
To disable the screenshot expansion set the following config.
|
||||
|
||||
```txt
|
||||
extensions.screenshots.disabled = true
|
||||
```
|
||||
|
||||
To disable Firefox Sync set the following config.
|
||||
|
||||
```txt
|
||||
identity.fxaccounts.enabled = false
|
||||
```
|
||||
|
||||
To disable form fillings set the following configs.
|
||||
|
||||
```txt
|
||||
browser.formfill.enable = false
|
||||
extensions.formautofill.addresses.enabled = false
|
||||
extensions.formautofill.creditCards.enabled = false
|
||||
extensions.formautofill.heuristics.enabled = false
|
||||
```
|
||||
|
||||
To disable fingerprinting the GPU set the following configs.
|
||||
|
||||
```txt
|
||||
webgl.enable-debug-renderer-info = false
|
||||
webgl.disable-extensions = true
|
||||
webgl.min_capability_mode = true
|
||||
webgl.disable-fail-if-major-performance-caveat = true
|
||||
```
|
||||
|
||||
To avoid operating system attacks via WebGL set the following configs.
|
||||
|
||||
```txt
|
||||
webgl.disabled = true
|
||||
webgl.enable-webgl2 = false
|
||||
```
|
||||
|
||||
To disable speculative loading of websites when hovering over links set the following config.
|
||||
|
||||
```txt
|
||||
network.http.speculative-parallel-limit = 0
|
||||
```
|
||||
|
||||
To disable remote deactivation of plugins by firefox aswell as connection of the AMO-servers on a
|
||||
daily basis set the following configs.
|
||||
|
||||
```txt
|
||||
extensions.blocklist.enabled = false
|
||||
extensions.getAddons.cache.enabled = false
|
||||
```
|
||||
|
||||
To disable various health reports and telemetry data set the following configs.
|
||||
|
||||
```txt
|
||||
browser.tabs.crashReporting.sendReport = false
|
||||
datareporting.policy.dataSubmissionEnabled = false
|
||||
datareporting.healthreport.uploadEnabled = false
|
||||
toolkit.coverage.endpoint.base = ""
|
||||
toolkit.coverage.opt-out = true
|
||||
toolkit.telemetry.coverage.opt-out = true
|
||||
```
|
||||
|
||||
To disable the localization done by pinging Mozillas location server set the following configs.
|
||||
|
||||
```txt
|
||||
browser.region.update.enabled = false
|
||||
browser.region.network.url = ""
|
||||
```
|
||||
|
||||
To disable safebrowsing which grabs block lists by Mozilla every 30 minutes run the set the
|
||||
following configs.
|
||||
|
||||
```txt
|
||||
browser.safebrowsing.phishing.enabled = false
|
||||
browser.safebrowsing.malware.enabled = false
|
||||
browser.safebrowsing.blockedURIs.enabled = false
|
||||
browser.safebrowsing.downloads.enabled = false
|
||||
browser.safebrowsing.downloads.remote.enabled = false
|
||||
browser.safebrowsing.downloads.remote.block_dangerous = false
|
||||
browser.safebrowsing.downloads.remote.block_dangerous_host = false
|
||||
browser.safebrowsing.downloads.remote.block_potentially_unwanted = false
|
||||
browser.safebrowsing.downloads.remote.block_uncommon = false
|
||||
browser.safebrowsing.downloads.remote.url = ""
|
||||
browser.safebrowsing.provider.*.gethashURL = ""
|
||||
browser.safebrowsing.provider.*.updateURL = ""
|
||||
browser.pagethumbnails.capturing_disabled = true
|
||||
```
|
||||
|
||||
To disable ads after an update set the following config.
|
||||
|
||||
```txt
|
||||
browser.startup.homepage_override.mstone = ignore
|
||||
```
|
||||
|
||||
To disable the ad system for Firefox add-ons set the following configs.
|
||||
|
||||
```txt
|
||||
browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons = false
|
||||
browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features = false
|
||||
extensions.htmlaboutaddons.recommendations.enabled = false
|
||||
extensions.ui.lastCategory = addons://list/extension
|
||||
```
|
||||
|
||||
To disable [VPN](/wiki/vpn.md) ads set the following config.
|
||||
|
||||
```txt
|
||||
browser.vpn_promo.enabled = false
|
||||
```
|
||||
|
||||
To disable the rating samples set the following config.
|
||||
|
||||
```txt
|
||||
app.normandy.enabled = false
|
||||
```
|
||||
|
||||
To always keep add-ons active even on Firefox and Mozilla sites set the following config.
|
||||
|
||||
```txt
|
||||
extensions.webextensions.restrictedDomains = ""
|
||||
```
|
||||
|
||||
To avoid the fingerprinting of desktop settings deactive the standard values for system colors by
|
||||
setting the following config.
|
||||
|
||||
```txt
|
||||
ui.use_standins_for_native_colors = true
|
||||
```
|
||||
|
||||
Firefox contacts Firefox' servers on each start to check IP connections.
|
||||
To disable this set the following config.
|
||||
|
||||
```txt
|
||||
network.connectivity-service.enabled = false
|
||||
```
|
||||
|
||||
To disable Microsoft Family Safety on [Windows systems](/wiki/windows/windows.md) which can be used
|
||||
as a censoring tool set the following config.
|
||||
|
||||
```txt
|
||||
security.family_safety.mode = 0
|
||||
```
|
||||
|
||||
Additionally check [the telemetry section](#telemetry) and
|
||||
[the sponsoring section](#sponsorings).
|
||||
|
@ -48,10 +48,6 @@ Additionally `find` can be used to recursively substitute substrings in all file
|
||||
find folder -type f -exec rename 's/string1/string2/g' {} +
|
||||
```
|
||||
|
||||
For renaming many files in bulk the `qmv` to move or `qcp` or copy can be used.
|
||||
Usually both of these commands are packaged withing the `renameutils` package.
|
||||
For more information visit the [renameutils website](https://www.nongnu.org/renameutils/).
|
||||
|
||||
### Expansion
|
||||
|
||||
This section is based on the
|
||||
|
@ -1,9 +0,0 @@
|
||||
# Tandoor Recipes
|
||||
|
||||
[Tandoor Recipes](https://docs.tandoor.dev/) is an application for managing recipes, meals and
|
||||
shop lists.
|
||||
|
||||
## Setup
|
||||
|
||||
The software can be setup via [Docker](/wiki/docker.md) with the
|
||||
[vabene1111 image](/wiki/docker/vabene1111_-_recipes.md).
|
Loading…
x
Reference in New Issue
Block a user