Setting up AdventureLog with unRAID Compose
Back to Blog

Setting up AdventureLog with unRAID Compose

Harriet Harrison Harriet Harrison
6 March 2026
6 min read

I 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.

Prerequisites

Docker Compose Manager: Follow the instructions on the installation page, to add the plugin.

💡
You can add the 'Compose' tab to the menu bar by heading to 'Settings', navigating to 'Compose'. Then select 'Show Compose in Header Menu' and change to 'Yes'

Create the new stack

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.

Adding the Compose config

  1. Click the settings icon âš™ī¸ next to your new stack
  2. Click 'Edit Stack'
  3. Then, click 'Compose file'

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

â„šī¸
I based my compose from the docker-compose.yml inside the github repository.

After that's done, make sure to click 'Save changes' and head back to the Compose stack list.

Environment variables

  1. Click the settings icon âš™ī¸ next to your new stack
  2. Click 'Edit Stack'
  3. Then, click 'ENV file'
AdventureLog/.env.example at main ¡ seanmorley15/AdventureLog
Self-hostable travel tracker and trip planner. Contribute to seanmorley15/AdventureLog development by creating an account on GitHub.

.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.

Docker 🐋 | AdventureLog
The ultimate travel companion.

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 32

Set 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 username
  • DJANGO_ADMIN_EMAIL to your email
  • DJANGO_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:

With 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.com

Make 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.

Without a reverse proxy

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:8015

Make 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.

Spinning up

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.

Folder config

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.

Unorganised containers

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:

My folder configuration
💡
You can use regex to automatically match containers to show in the folder. Such as adventurelog*

Conclusion

And now you will now be able to track all your future trips... complete with trail data and your photos!

Share this article

Enjoyed this article?

Subscribe and get emailed when I publish a new article