Compare commits

...

7 Commits

Author SHA1 Message Date
f
977984baf5 fix: celery 2025-02-06 18:03:23 -03:00
f
05680cd235 fix: mount volumes 2025-02-06 18:03:10 -03:00
f
9d20909ae4 feat: upgrade to 1.4.0 #8 2025-02-06 18:02:50 -03:00
f
544783955a fix: refactor env 2025-02-06 18:01:37 -03:00
f
a97746b191 fix: the admin command requires a tty 2025-02-06 16:43:19 -03:00
f
9dde935a1d fix: migrate during startup 2025-02-06 16:37:39 -03:00
f
45e563b875 fix: mount frontend as a shared volume 2025-02-06 16:37:18 -03:00
5 changed files with 72 additions and 57 deletions

View File

@ -12,20 +12,9 @@ SECRET_DJANGO_SECRET_KEY_VERSION=v1
# more concurrent requests, but also leads to higher CPU/Memory usage
FUNKWHALE_WEB_WORKERS=4
# Replace this by the definitive, public domain you will use for
# your instance. It cannot be changed after initial deployment
# without breaking your instance.
FUNKWHALE_HOSTNAME=funkwhale.example.com
FUNKWHALE_PROTOCOL=https
# Log level (debug, info, warning, error, critical)
LOGLEVEL=error
# Depending on the reverse proxy used in front of your funkwhale instance,
# the API will use different kind of headers to serve audio files
# Allowed values: nginx, apache2
REVERSE_PROXY_TYPE=nginx
# Number of worker processes to execute. Defaults to 0, in which case it uses
# your number of CPUs Celery workers handle background tasks (such file imports
# or federation messaging). The more processes a worker gets, the more tasks
@ -33,6 +22,20 @@ REVERSE_PROXY_TYPE=nginx
# memory footprint.
# CELERYD_CONCURRENCY=0
# which settings module should django use?
# You don't have to touch this unless you really know what you're doing
DJANGO_SETTINGS_MODULE=config.settings.production
# Max upload size
NGINX_MAX_BODY_SIZE=100M
# Insert e-mail secret like this:
#
# abra app secret insert APP email_config v1 "URL"
#
# Where URL is
# smtp+ssl://user:password@youremail.host:465
# smtp://user:password@youremail.host:25
# smtp+tls://user:password@youremail.host:587
SECRET_EMAIL_CONFIG_VERSION=v1
# DEFAULT_FROM_EMAIL=noreply@yourdomain
# Make e-mail verification mandatory before using the service
ACCOUNT_EMAIL_VERIFICATION_ENFORCE=true

View File

@ -30,6 +30,4 @@ For more, see [`docs.coopcloud.tech`](https://docs.coopcloud.tech).
Before you deploy: `abra app cmd <app> secrets --local`
After you deploy:
- `cp -r frontend/* /srv/funkwhale/front/dist`
- `abra app cmd <app> api migrate`
- `abra app cmd <app> api admin`
- `abra app cmd -T <app> api admin`

View File

@ -1,5 +1,5 @@
export NGINX_CONFIG_VERSION=v2
export APP_ENTRYPOINT_VERSION=v1
export APP_ENTRYPOINT_VERSION=v2
secrets() {
docker context use default > /dev/null 2>&1

View File

@ -2,39 +2,60 @@
version: "3.8"
x-environment: &default-env
- FUNKWHALE_HOSTNAME=${HOSTNAME}
- FUNKWHALE_PROTOCOL=https
- REVERSE_PROXY_TYPE=nginx
- DJANGO_SETTINGS_MODULE=config.settings.production
- FUNKWHALE_API_IP=127.0.0.1
- FUNKWHALE_API_PORT=5000
- CACHE_URL=redis://cache:6379/0
- DEFAULT_FROM_EMAIL=noreply@${DOMAIN}
- FUNKWHALE_WEB_WORKERS
- LOGLEVEL
- ACCOUNT_EMAIL_VERIFICATION_ENFORCE
- CELERYD_CONCURRENCY
- C_FORCE_ROOT=true
- DATABASE_PASSWORD_FILE=/run/secrets/db_password
- DJANGO_SECRET_KEY_FILE=/run/secrets/django_secret_key
- DJANGO_SETTINGS_MODULE
- DOMAIN
- FUNKWHALE_FRONTEND_PATH=/srv/funkwhale/front/dist
- FUNKWHALE_HOSTNAME
- FUNKWHALE_WEB_WORKERS
- LOGLEVEL
- NGINX_MAX_BODY_SIZE
- MEDIA_ROOT=/srv/funkwhale/data/media
- MUSIC_DIRECTORY_PATH=/srv/funkwhale/data/music
- MUSIC_DIRECTORY_SERVE_PATH=/srv/funkwhale/data/music
- REVERSE_PROXY_TYPE
- STACK_NAME
- STATIC_ROOT=/srv/funkwhale/data/static
- MUSIC_DIRECTORY_PATH=/music
- MUSIC_DIRECTORY_SERVE_PATH=/srv/funkwhale/data/music
- STACK_NAME
x-secrets: &default-secrets
- db_password
- django_secret_key
x-volumes: &default-volumes
- music-data:/srv/funkwhale/data/music:ro
- media-data:/srv/funkwhale/data/media
- static-data:/srv/funkwhale/data/static
- frontend-data:/srv/funkwhale/front/dist:ro
services:
app:
image: nginx:1.27.1
api:
image: funkwhale/api:1.4.0
environment: *default-env
volumes: *default-volumes
secrets: *default-secrets
volumes:
- music-data:/music:ro
- media-data:/srv/funkwhale/data/media
- static-data:/srv/funkwhale/data/static
depends_on:
- db
- cache
configs:
- source: app_entrypoint
target: /docker-entrypoint.sh
mode: 0555
entrypoint: /docker-entrypoint.sh
command: /app/compose/django/server.sh
networks:
- internal
app:
image: funkwhale/front:1.4.0
environment: *default-env
volumes:
- music-data:/music:ro
- media-data:/srv/funkwhale/data/media:ro
- static-data:/usr/share/nginx/html/staticfiles:ro
configs:
- source: nginx_config
target: /etc/nginx/nginx.conf
@ -53,27 +74,33 @@ services:
- "coop-cloud.${STACK_NAME}.version=0.1.1+1.27.1"
celeryworker:
image: funkwhale/funkwhale:1.2
image: funkwhale/api:1.4.0
depends_on:
- db
- cache
environment: *default-env
secrets: *default-secrets
volumes: *default-volumes
volumes:
- music-data:/music:ro
- media-data:/srv/funkwhale/data/media
configs:
- source: app_entrypoint
target: /docker-entrypoint.sh
mode: 0555
entrypoint: /docker-entrypoint.sh
command: celery -A funkwhale_api.taskapp worker -l INFO
command:
- celery
- --app=funkwhale_api.taskapp
- worker
- --loglevel=${LOGLEVEL}
- --concurrency=${CELERYD_CONCURRENCY:-0}
networks:
- internal
celerybeat:
image: funkwhale/funkwhale:1.2
image: funkwhale/funkwhale:1.4.0
environment: *default-env
secrets: *default-secrets
volumes: *default-volumes
depends_on:
- db
- cache
@ -86,22 +113,6 @@ services:
networks:
- internal
api:
image: funkwhale/funkwhale:1.2
environment: *default-env
secrets: *default-secrets
volumes: *default-volumes
depends_on:
- db
- cache
configs:
- source: app_entrypoint
target: /docker-entrypoint.sh
mode: 0555
entrypoint: /docker-entrypoint.sh
command: /app/compose/django/server.sh
networks:
- internal
db:
image: postgres:10-alpine

View File

@ -29,6 +29,9 @@ export DATABASE_URL="postgres://funkwhale:$DATABASE_PASSWORD@db:5432/funkwhale"
file_env "DJANGO_SECRET_KEY"
# migrate before starting
python manage.py migrate
# upstream entrypoint
# https://dev.funkwhale.audio/funkwhale/funkwhale/-/blob/develop/api/Dockerfile
/app/compose/django/entrypoint.sh "$@"