# Installation Process LinkAce is a self-hosted archive to collect links of your favorite websites. Save articles to read them later, tools to use them in your next project, or historic content to archive it for the long term. LinkAce comes with a lot of features while keeping a clean and minimal interface. *Additional notes and other information can be found at the bottom of this page.* To install [LinkAce](https://www.linkace.org/), you'll want to SSH into your server and navigate to where you want to install the containers. I install them in /home in this demonstration. So you'll type: `cd /home` Then you'll want to make a LinkAce directory and cd into that directory `mkdir LinkAce && cd LinkAce` Next step is to create 2 files: `touch docker-compose.yml` `touch .env` Now, let's edit the docker-compose file: `nano docker-compose.yml` Paste the following into the docker-compose.yml: ``` version: "3" services: # --- MariaDB db: image: mariadb:10.5 restart: unless-stopped command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_bin environment: - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} - MYSQL_USER=${DB_USERNAME} - MYSQL_PASSWORD=${DB_PASSWORD} - MYSQL_DATABASE=${DB_DATABASE} volumes: - db:/var/lib/mysql # --- LinkAce Image with PHP 7.4 and nginx app: image: linkace/linkace:simple restart: unless-stopped depends_on: - db ports: - 80:80 volumes: - ./.env:/app/.env - linkace_logs:/app/storage/logs volumes: linkace_logs: db: driver: local ``` Change port 80 to whatever port you want to use so that it is something like: 81:80 Now save and exit: *CTRL+O, Enter, CTRL+X* Next, you'll want to edit the .env file: `nano .env` And paste the following in the .env: ``` ## LINKACE CONFIGURATION ## Basic app configuration # The application name is used internally and may not be changed APP_NAME=LinkAce COMPOSE_PROJECT_NAME=linkace # The URL should be set if you notice issues with URLs generated by Laravel, which might be an issue with # nginx configuration or the proxy you use. APP_URL=http://localhost # The environment is usually 'production' but may be changed to 'local' for development APP_ENV=production # The app key is generated later, please leave it blank APP_KEY= # Enable the debug more if you are running into issues or while developing APP_DEBUG=false # Set to true, if you are using a proxy that terminates SSL. Required to get the correct URLs for LinkAce FORCE_HTTPS=false # Indicates that the setup was completed and the app can be used now SETUP_COMPLETED=false # Set the time after a session expires automatically, in minutes. Default is 7 days. SESSION_LIFETIME=10080 ## Backup configuration # Enable backups here BACKUP_ENABLED=false # Choose the destination of the backup. If you set up AWS S3 credentials below you may choose 's3' which is used # as a synonym for AWS. Leave blank or set to 'local' if you want to store backups within /storage/app/backups. BACKUP_DISK=s3 # Set to false if you do not want to be notified about successful or broken backups BACKUP_NOTIFICATIONS=true # The notification email may be used to get backup notifications BACKUP_NOTIFICATION_EMAIL=your@email.com # Maximum size of all backups in megabytes BACKUP_MAX_SIZE=512 ## Amazon Web Services (AWS) S3 configuration # Define the key ID, the access key, the region and your bucket name here if you want to use AWS S3 for backups AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= ## Mail configuration MAIL_FROM_ADDRESS=your@email.com MAIL_FROM_NAME=LinkAce # Set the driver used for sending email here, default is `smtp` MAIL_DRIVER=smtp # Set the SMTP host and its port here MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 # Set the username used to connect to the SMTP server here MAIL_USERNAME=null # Set the password used to connect to the SMTP server here MAIL_PASSWORD=null # If your SMTP server uses encrypted connections, enable it here by setting the variable to `tls` MAIL_ENCRYPTION=null ## Configuration of the database connection ## If you are using the standard configuration provided by LinkAce, you can leave all values except the password as ## they are. Docker will automatically create a linkace database and a corresponding user. DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=linkace # Even if you use the standard configuration, please set a secure password here. DB_USERNAME=linkace DB_PASSWORD=ChangeThisToASecurePassword! ## Redis cache configuration # Set the Redis connection here if you want to use it REDIS_HOST=redis REDIS_PASSWORD=ChangeThisToASecurePassword! REDIS_PORT=6379 ## You probably do not want to change any values blow. Only continue if you know what you are doing. # Configure various driver SESSION_DRIVER=file LOG_CHANNEL=stack BROADCAST_DRIVER=log CACHE_DRIVER=file QUEUE_DRIVER=database ## Using Redis sockets # If you want to use Redis via a Unix socket, you can remove the hash before the following lines, but remove one before # the "CACHE_DRIVER" line above. Also, set a proper path to your Redis socket. #CACHE_DRIVER=redis-socket #SESSION_CONNECTION=redis-socket #REDIS_SCHEME=unix #REDIS_PATH=/path/to/redis.sock ``` Adjust the settings in here as necessary. Be sure to leave the `APP_KEY` variable empty and then save and exit: *CTRL+O, Enter, CTRL+X* In order to set the correct read/write permissions for the container to modify the .env file, you'll need to run the following command: `chmod 666 .env` Now that we've done all of this, we should be able to run the following: `docker-compose up -d` This should start the process of downloading the requisit images and then deploying the container. Next we'll create the APP\_KEY by entering the following into our terminal: `docker exec linkace_app_1 php artisan key:generate` Once the containers have come up, you can go to *http://your-server-ip:81* Be sure to change the URL and port above to your server's actual IP and the port you declared in the docker-compose above. You can go through the setup process of connecting to the database and setting up the user account.

NOTE: At the time of creating this tutorial, only a single user account is an option. They are planning to add multi-user support in version 2. [Source](https://community.linkace.org/t/multiple-users/63/2)

LinkAce supported architectures can be found [here](https://hub.docker.com/r/linkace/linkace/tags)

LinkAce [Github](https://github.com/Kovah/LinkAce/blob/main/docker-compose.production-simple.yml)

Original Docker-Compose can be found [here](https://github.com/Kovah/LinkAce/blob/main/docker-compose.production-simple.yml)

Original .env file can be found [here](https://github.com/Kovah/LinkAce/blob/main/.env.docker.production)