Skip to Content
docssetupDocker

Last Updated: 3/9/2026


Setup with Docker

Working with Docker is straightforward, but you should be familiar with Docker basics. We provide Docker Compose files in the repository that contain all needed services, configured to run the application right away.

Docker Images

All images are available on:

Supported architectures: amd64, arm64, and arm/v7

Base Requirements

  • Command-line access to your server
  • Docker version 19 or greater
  • Docker Compose (recommended, must support at least compose version 3)

2-Minute Test Setup

You can run LinkAce within minutes using a SQLite database to try out the application.

Note: This is not recommended for production use, and migrating from this test setup to another database is not supported.

touch database.sqlite chmod 0766 database.sqlite docker run -p "8080:80" -v "./database.sqlite:/app/database/database.sqlite" linkace/linkace

Then open http://localhost:8080 in your browser and follow the setup steps.

Troubleshooting Port Issues

If the LinkAce container is not starting due to OS-specific Docker permissions, try running on another internal port:

docker run -p "8080:8080" -e "PORT=8080" -v "./database.sqlite:/app/database/database.sqlite" linkace/linkace

This is the only supported setup method for Docker in production.

Step 1: Copy the Needed Files

Download the Docker setup package from the LinkAce repository: linkace-docker.zip 

Alternatively, view the files directly:

Step 2: Edit the Base Configuration

Change these settings in the .env file before starting:

  • DB_PASSWORD - Set a secure password
  • REDIS_PASSWORD - Set a secure password

Important: Make sure the .env file is writable (-rw-rw-rw- or 666). You can switch back to read-only after setup.

Your directory structure should look like:

/my-user-directory/linkace ├─ .env ├─ docker-compose.yml ├─ LICENSE.md └─ README.md

Using Environment Variables Instead of .env File

If you prefer environment variables in docker-compose.yml, you must generate your own application key:

docker run --rm -it linkace/linkace php artisan key:generate --show

Example output:

base64:Il/5KRDENz2TiCYjKweDAkI93Q4D5ZWmP3AORXgReNo=

Add it to your docker-compose.yml:

services: app: image: docker.io/linkace/linkace:latest environment: APP_KEY: base64:Il/5KRDENz2TiCYjKweDAkI93Q4D5ZWmP3AORXgReNo= DB_CONNECTION: mysql # ...

Step 3: Start the Application

docker compose up -d

Step 4: Start the Built-in Setup

Open the URL pointing to your Docker container in your browser. For local setups, this is typically http://localhost or your domain.

Configure the database and your user account in the setup process.

Step 5: Follow Post-Installation Steps

Make sure to follow the post-installation steps to fully enable all features.

Advanced Configuration

Completing Installation Without Web Setup

If you have issues with the built-in web setup, complete the installation via command line:

  1. Follow instructions above until step 4
  2. Configure database in .env file BEFORE running these commands:
docker exec -it linkace_app_1 php artisan migrate docker exec -it linkace_app_1 php artisan setup:complete docker exec -it linkace_app_1 php artisan registeruser --admin

The last command creates your first admin user.

Running Behind a Proxy/Load Balancer

If using a proxy/load balancer with HTTPS, ensure it sends these headers:

  • X-Forwarded-Proto
  • X-Forwarded-For

Nginx configuration example:

proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host;

Apache configuration example:

ProxyPreserveHost on RequestHeader set X-Forwarded-Port "443" RequestHeader set X-Forwarded-Proto "https"

Custom Port Configuration

LinkAce 2 accepts a $PORT environment variable to listen on a specified port. Useful for restricted Docker hosting environments like Heroku.

Running LinkAce Directly with SSL

To run LinkAce with HTTPS without a proxy:

  1. Stop your existing LinkAce setup
  2. Ensure your domain is accessible from the internet
  3. Download ssl.Caddyfile 
  4. Place it beside your docker-compose.yml file
  5. Modify docker-compose.yml:
services: app: image: docker.io/linkace/linkace:latest environment: LINKACE_DOMAIN: "your-linkace-domain.com" PORT: 443
  1. Uncomment these lines:

    • - "0.0.0.0:443:443"
    • - ./caddy-data:/home/www-data/.local/share/caddy
    • - ./ssl.Caddyfile:/etc/caddy/Caddyfile
  2. Start the installation: docker compose up -d

The web server will obtain the SSL certificate automatically. Check logs with:

docker compose logs -f app

Compatibility with Other Tools

Watchtower: Several users reported broken LinkAce installations after Watchtower ran updates. Please exclude LinkAce from Watchtower and only update manually to properly run all update steps.