atuin/docs/docker.md
Klas Mellbourn f946644ceb
Add kubernetes instructions and manifests (#427)
* add kubernetes instructions

* minor wording improvements

* better password instructions

* add information about changed port

* improved grammar

* Separate docker and k8s docs

Add k8s folder for kubernetes configs
2022-06-26 18:40:36 +00:00

1.9 KiB

Docker

There is a supplied docker image to make deploying a server as a container easier.

docker run -d -v "$USER/.config/atuin:/config" ghcr.io/ellie/atuin:latest server start

Docker Compose

Using the already build docker image hosting your own Atuin can be done using the supplied docker-compose file.

Create a .env file next to docker-compose.yml with contents like this:

ATUIN_DB_USERNAME=atuin
# Choose your own secure password
ATUIN_DB_PASSWORD=really-insecure

Create a docker-compose.yml:

version: '3.5'
services:
  atuin:
    restart: always
    image: ghcr.io/ellie/atuin:main
    command: server start
    volumes:
      - "./config:/config"
    links:
      - postgresql:db
    ports:
      - 8888:8888
    environment:
      ATUIN_HOST: "0.0.0.0"
      ATUIN_OPEN_REGISTRATION: "true"
      ATUIN_DB_URI: postgres://$ATUIN_DB_USERNAME:$ATUIN_DB_PASSWORD@db/atuin
  postgresql:
    image: postgres:14
    restart: unless-stopped
    volumes: # Don't remove permanent storage for index database files!
      - "./database:/var/lib/postgresql/data/"
    environment:
      POSTGRES_USER: $ATUIN_DB_USERNAME
      POSTGRES_PASSWORD: $ATUIN_DB_PASSWORD
      POSTGRES_DB: atuin

Start the services using docker-compose:

docker-compose up -d

Using systemd to manage your atuin server

The following systemd unit file to manage your docker-compose managed service:

[Unit]
Description=Docker Compose Atuin Service
Requires=docker.service
After=docker.service

[Service]
# Where the docker-compose file is located
WorkingDirectory=/srv/atuin-server
ExecStart=/usr/bin/docker-compose up
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

Start and enable the service with:

systemctl enable --now atuin

Check if its running with:

systemctl status atuin