Docs(Docker): Adapt setup instructions for new development environments
co-authored-by: upsiflu@gmail.com co-authored-by: jon@allmende.io
This commit is contained in:
		
							parent
							
								
									26295c08f7
								
							
						
					
					
						commit
						b1be4be6a0
					
				|  | @ -52,7 +52,7 @@ To set up your Docker environment: | ||||||
| 3. Create a network for federation support | 3. Create a network for federation support | ||||||
| 
 | 
 | ||||||
|    ```sh |    ```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. | 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 | 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 | ## Manage services | ||||||
| 
 | 
 | ||||||
| Once you have set up your containers, launch all services to start working on them: | 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 | ```sh | ||||||
|  | docker compose -f compose.net.yml up -d | ||||||
| docker compose up -d | docker compose up -d | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| This gives you access to the following: | 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 Funkwhale API on `http://localhost:8000/api/v1` | ||||||
| - The Django admin interface on `http://localhost:8000/api/admin` | - 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 | ```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: | 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 | 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 | ## 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 | 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 | 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`. | 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 | ```sh | ||||||
| sudo cp docker/ssl/test.crt /usr/local/share/ca-certificates/ | sudo cp docker/ssl/test.crt /usr/local/share/ca-certificates/ | ||||||
| sudo update-ca-certificates | sudo update-ca-certificates | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| For RHEL-based systems, like Fedora, run: | For RHEL-based systems like Fedora, run: | ||||||
| 
 | 
 | ||||||
| ```sh | ```sh | ||||||
| sudo cp docker/ssl/test.crt /etc/pki/ca-trust/source/anchors/ | 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 |    export COMPOSE_PROJECT_NAME=node2 | ||||||
|    # VUE_PORT this has to be unique for each instance |    # VUE_PORT this has to be unique for each instance | ||||||
|    export VUE_PORT=1234 |    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 run --rm api funkwhale-manage fw users create --superuser | ||||||
|    docker compose up -d |    docker compose up -d | ||||||
|    ``` |    ``` | ||||||
| 
 | 
 | ||||||
|    You can access your project at `https://{COMPOSE_PROJECT_NAME}.funkwhale.test`. |    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 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 ArneBo
						ArneBo