Setting up AdventureLog with unRAID Compose
Harriet Harrison
Harriet HarrisonI use unRAID to self-host a few services from documentation to file hosting. When I heard that there's a self-hosted service to document my trips, I jumped at the idea.
AdventureLog allows you to track countries visited, integrate photos with Immich (an alternative to Google Photos that's also self-hosted), see trips with GPX data, etc.
I found that the existing documentation (found here) isn't the best way to set this up in unRAID. In this article, I'll show you how to setup AdventureLog with 'Docker Compose Manager', in just 15 minutes.
Docker Compose Manager: Follow the instructions on the installation page, to add the plugin.

Navigate to the Compose tab. If you can't find it, head on over to http://your-ip:4430/Compose and click on 'Add new Stack'.
AdventureLog should then be displayed in the list.

Below is a slightly modified docker compose to include variables for volume mappings. Copy the following into the text editor:
services:
web:
#build: ./frontend/
image: ghcr.io/seanmorley15/adventurelog-frontend:latest
container_name: adventurelog_frontend
restart: unless-stopped
env_file: .env
ports:
- "${FRONTEND_PORT:-8015}:3000"
depends_on:
- server
db:
image: postgis/postgis:16-3.5
container_name: adventurelog_db
restart: unless-stopped
env_file: .env
volumes:
- ${DB_DATA_DIR}:/var/lib/postgresql/data/
server:
#build: ./backend/
image: ghcr.io/seanmorley15/adventurelog-backend:latest
container_name: adventurelog_backend
restart: unless-stopped
env_file: .env
ports:
- "${BACKEND_PORT:-8016}:80"
depends_on:
- db
volumes:
- ${MEDIA_DIR}:/code/media/docker-compose.yml
After that's done, make sure to click 'Save changes' and head back to the Compose stack list.
.env
Use the above .env.example to turn into your example file. We'll need to edit this, so don't save it just yet.
First, we'll add the new DIR variables. These are used to show where AdventureLog's data will be stored on the host. This will usually be in your appdata directory. Check your current docker volume mappings if you're not sure where your data is stored currently. Make sure this is an absolute directory.
DB_DATA_DIR=/mnt/user/appdata/adventurelog/db
MEDIA_DIR=/mnt/user/appdata/adventurelog/media.env variables for directories
View information about each environment variable in the configuration section of the AdventureLog docs.

Now, change your POSTGRES_PASSWORD and SECRET_KEY. They should be secure. If you're on Linux or MacOS, you can use openssl to generate a random string of characters with:
openssl rand -hex 32Set your username, email and password with the env vars below. These will be used to create your initial user, and used to sign in later.
DJANGO_ADMIN_USERNAME to your usernameDJANGO_ADMIN_EMAIL to your emailDJANGO_ADMIN_PASSWORD: Use the openssl random function to get a more secure password, especially useful if you plan to expose AdventureLog to the internet.Now, follow the documentation for configuring with or without a reverse proxy:
I'll be using Caddy as a reverse proxy to set this up. Change the following variables and set it to your external domain, replacing adventurelog.example.com with your (sub)domain name.
FRONTEND_URL=https://adventurelog.example.com
PUBLIC_SERVER_URL=http://server:80
PUBLIC_URL=https://adventurelog.example.com
CSRF_TRUSTED_ORIGINS=http://localhost:8016,http://localhost:8015,https://adventurelog.example.com
ORIGIN=https://adventurelog.example.comMake sure to leave PUBLIC_SERVER_URL to http://server:80. This is used by the frontend to access the backend.
I removed the ORIGIN variable from the .env.example due to the instruction from the Docker setup:
Needed only if not using HTTPS. Set it to the domain or IP you'll use to access the frontend.
Then, add your configuration to Caddy. Replace ip-of-server with your unRAID server IP. This configuration will allow both the frontend and backend to work with one domain:
https://adventure.example.com {
encode zstd gzip
@frontend {
not path /media* /admin* /static* /accounts*
}
reverse_proxy @frontend ip-of-server:8015
reverse_proxy ip-of-server:8016
}Make sure to 'Save changes' and go back to the compose list.
Change your variables to use the IP of the server, keeping the port depending on whether its the frontend (8015) or backend (8016)
FRONTEND_URL=http://ip-of-server:8015
PUBLIC_SERVER_URL=http://server:80
PUBLIC_URL=http://ip-of-server:8016
CSRF_TRUSTED_ORIGINS=http://localhost:8016,http://localhost:8015,http://ip-of-server:8016,http://ip-of-server:8015
ORIGIN=http://ip-of-server:8015Make sure to leave PUBLIC_SERVER_URL to http://server:80. This is used by the frontend to access the backend.
Make sure to 'Save changes' and go back to the compose list.
Double check your configuration and folder mappings, and if you're happy, click 'Compose up' to start your docker.
You can enable 'Auto start' if required, this way it'll boot up when you start your server.
And if everything's gone well, you should now see AdventureLog at either your server address adventure.example.com or ip-of-server:8015, Depending on your configuration.

Try navigating to the 'Login' page. The first time I tried, I had an internal server error due to a misconfiguration. A quick env update and then I could see the login page without error.
After logging in, you'll see a similar interface to the screenshot below. I've already added a trip, so it may look slightly different.

Now that AdventureLog is setup, you will be able to view the AdventureLog containers inside the Docker tab. Using the FolderView2 plugin, you can group containers into folders, making it much easier to read and organise.

At the bottom of the folder tab, click 'Add folder'. Fill in the name field - I called mine simply AdventureLog.
The icon is taken from a URL, for example the AdventureLog logo can be retrieved through:
https://adventurelog.app/adventurelog.png
Configure the toggles and dropdowns to suit your setup, I prefer the icon view with everything accessed through clicks. You should get a setup similar to:

adventurelog*And now you will now be able to track all your future trips... complete with trail data and your photos!
Subscribe and get emailed when I publish a new article