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/linkaceThen 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/linkaceStable Setup (Recommended)
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 passwordREDIS_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.mdUsing 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 --showExample 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 -dStep 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:
- Follow instructions above until step 4
- Configure database in
.envfile 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 --adminThe 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-ProtoX-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:
- Stop your existing LinkAce setup
- Ensure your domain is accessible from the internet
- Download ssl.Caddyfile
- Place it beside your
docker-compose.ymlfile - Modify
docker-compose.yml:
services:
app:
image: docker.io/linkace/linkace:latest
environment:
LINKACE_DOMAIN: "your-linkace-domain.com"
PORT: 443-
Uncomment these lines:
- "0.0.0.0:443:443"- ./caddy-data:/home/www-data/.local/share/caddy- ./ssl.Caddyfile:/etc/caddy/Caddyfile
-
Start the installation:
docker compose up -d
The web server will obtain the SSL certificate automatically. Check logs with:
docker compose logs -f appCompatibility 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.