diff --git a/docs/developer/setup/docker.md b/docs/developer/setup/docker.md index ffca96e73..11eb499db 100644 --- a/docs/developer/setup/docker.md +++ b/docs/developer/setup/docker.md @@ -52,7 +52,7 @@ To set up your Docker environment: 3. Create a network for federation support ```sh - sudo docker network create federation + docker network create federation ``` Once you've set everything up, you need to build the containers. Run this command any time there are upstream changes or dependency changes to ensure you're up-to-date. @@ -61,52 +61,47 @@ Once you've set everything up, you need to build the containers. Run this comman docker compose build ``` -## Set up the database - -Funkwhale relies on a postgresql database to store information. To set this up, you need to run the `funkwhale-manage migrate` command: - -```sh -docker compose run --rm api funkwhale-manage migrate -``` - -This command creates all the required tables. You need to run this whenever there are changes to the API schema. You can run this at any time without causing issues. - -## Set up local data - -You need to create some local data to mimic a production environment. - -1. Create a superuser so you can log in to your local app: - - ```sh - docker compose run --rm api funkwhale-manage fw users create --superuser - ``` - -2. Add some fake data to populate the database. The following command creates 25 artists with random albums, tracks, and metadata. - - ```sh - artists=25 # Adds 25 fake artists - command="from funkwhale_api.music import fake_data; fake_data.create_data($artists)" - echo $command | docker compose run --rm -T api funkwhale-manage shell -i python - ``` - ## Manage services Once you have set up your containers, launch all services to start working on them: +::::{tab-set} + +:::{tab-item} Multi node federation testnet (Default) + ```sh +docker compose -f compose.net.yml up -d docker compose up -d ``` This gives you access to the following: -- The Funkwhale webapp on `http://localhost:8000` +- The Funkwhale web app on `https://funkwhale.funkwhale.test` +- The Funkwhale API on `https://funkwhale.funkwhale.test/api/v1` +- The Django admin interface on `https://funkwhale.funkwhale.test/api/admin` + +::: + +:::{tab-item} Single node local development + +```sh +docker compose -f compose.yml -f compose.local.yml up -d +``` + +This gives you access to the following: + +- The Funkwhale web app on `http://localhost:8000` - The Funkwhale API on `http://localhost:8000/api/v1` - The Django admin interface on `http://localhost:8000/api/admin` -Please note that at this stage, login will only work if you choose to run this together with the `single-node` overlay: +::: + +:::: + +To be able to login create a local superuser: ```sh -docker compose -f compose.yml -f compose.single-node.yml up -d +docker compose run --rm api funkwhale-manage fw users create --superuser ``` Once you're done with the containers, you can stop them all: @@ -127,9 +122,21 @@ To also destroy the state of your containers, run: docker compose down -v ``` +## Set up local data + +You can create local data to mimic a live environment. + +Add some fake data to populate the database. The following command creates 25 artists with random albums, tracks, and metadata. + +```sh +artists=25 # Adds 25 fake artists +command="from funkwhale_api.music import fake_data; fake_data.create_data($artists)" +echo $command | docker compose run --rm -T api funkwhale-manage shell -i python +``` + ## Set up federation support -Working on federation features requires some additional setup. You need to do the following: +Working on federation features requires additional setup. You need to do the following: 1. Update your DNS resolver to resolve all your `.test` hostnames locally 2. Set up a reverse proxy (such as traefik) to catch `.test` requests with a TLS certificate @@ -171,14 +178,14 @@ sudo resolvectl dns docker0 172.17.0.1 To add a wildcard certificate, copy the test certificate from the `docker/ssl` folder to your system store. This certificate is a wildcard for `*.funkwhale.test`. -For Debian-based systems, like Ubuntu, run: +For Debian-based systems like Ubuntu, run: ```sh sudo cp docker/ssl/test.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates ``` -For RHEL-based systems, like Fedora, run: +For RHEL-based systems like Fedora, run: ```sh sudo cp docker/ssl/test.crt /etc/pki/ca-trust/source/anchors/ @@ -215,9 +222,13 @@ To run a reverse proxy for your app: export COMPOSE_PROJECT_NAME=node2 # VUE_PORT this has to be unique for each instance export VUE_PORT=1234 - docker compose run --rm api funkwhale-manage migrate docker compose run --rm api funkwhale-manage fw users create --superuser docker compose up -d ``` You can access your project at `https://{COMPOSE_PROJECT_NAME}.funkwhale.test`. + +## Known issues and workarounds + +- (systemd-resolved) Under certain conditions the `docker0` bridge does not stay up, which in turn deactivates any DNS configuration associated to the interface. Uncomment the prepared resolved helper in line #6 of `compose.net.yml` to fix this issue and restart the networking stack. `docker compose -f compose.net.yml up -d` +- Broken federation on Alpine containers