Nomploy Nomad Packs

← All packs

linkding v0.1.0

Apps

linkding — a minimal, fast, self-hosted bookmark manager with tags, full-text search, bulk editing, a bookmarklet and browser extensions, and read-it-later archiving. Deployed as a host-networked Nomad service using SQLite with a persistent data volume.

nomad-pack run linkding --registry nomploy
…or one line (add registry + run)
curl -fsSL https://packs.nomploy.com/install.sh | sh -s -- linkding

Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.

1 task http 9091 1 volume image sissbruecker/linkding:latest tracks :latest image bumped today
Variables 10
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run linkding -f values.hcl --registry nomploy
# The name of the Nomad job.
job_name = "linkding"

# The Nomad namespace to deploy into.
namespace = "default"

# The datacenters to deploy to.
datacenters = ["*"]

# The linkding container image. Pin a tag in production.
image = "sissbruecker/linkding:latest"

# Host port for the linkding web UI (LD_SERVER_PORT).
port = 9091

# Initial admin username (LD_SUPERUSER_NAME). Created on first boot.
superuser_name = "admin"

# Initial admin password (LD_SUPERUSER_PASSWORD). CHANGE THIS.
superuser_password = "change-me-please"

# Named volume for linkding data (/etc/linkding/data): the SQLite database and archived snapshots.
data_volume = "linkding_data"

# Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# Resources for the linkding task.
resources = {
    cpu    = 300
    memory = 256
  }
NameTypeDefaultDescription
job_name string
"linkding"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"sissbruecker/linkding:latest"
The linkding container image. Pin a tag in production.
port number
9091
Host port for the linkding web UI (LD_SERVER_PORT).
superuser_name string
"admin"
Initial admin username (LD_SUPERUSER_NAME). Created on first boot.
superuser_password set me string
"change-me-please"
Initial admin password (LD_SUPERUSER_PASSWORD). CHANGE THIS.
data_volume string
"linkding_data"
Named volume for linkding data (/etc/linkding/data): the SQLite database and archived snapshots.
constraints list
[]
Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 300
    memory = 256
  }
Resources for the linkding task.
Back up this pack

This pack stores data in one Docker named volume: linkding_data

restic

# Run on the node hosting this pack. Point restic at your repo first:
#   export RESTIC_REPOSITORY="s3:https://<account>.r2.cloudflarestorage.com/<bucket>"
#   export RESTIC_PASSWORD="<repo-password>"
#   export AWS_ACCESS_KEY_ID=<key>  AWS_SECRET_ACCESS_KEY=<secret>
restic backup \
  /var/lib/docker/volumes/linkding_data/_data

rclone (sync to S3/R2)

rclone sync /var/lib/docker/volumes/linkding_data/_data backup:<bucket>/linkding_data

Paths assume the default Docker volume location (/var/lib/docker/volumes). Restore by stopping the job, restoring files into the same volume, and re-running the pack.

Readme

linkding

linkding — a minimal, fast, self-hosted bookmark manager. Organize links with tags, search full-text, bulk-edit, and archive pages for read-it-later. Ships a bookmarklet and works with the official browser extensions and a REST API.

Single host-networked Nomad service using SQLite with a persistent data volume.

Deploy

nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run linkding --registry=nomploy

Configure

Variable Default Description
port 9091 Web UI port (LD_SERVER_PORT).
superuser_name admin Initial admin username (LD_SUPERUSER_NAME).
superuser_password change-me-please Initial admin password (LD_SUPERUSER_PASSWORD). Change it.
data_volume linkding_data /etc/linkding/data — SQLite DB and archived snapshots.
image sissbruecker/linkding:latest Container image. Pin a tag in production.
resources { cpu = 300, memory = 256 } Task resources.

The admin account is created from the LD_SUPERUSER_* env on first boot. For automatic full-page HTML snapshots, use the :latest-plus image (bundles a headless browser). Serves plain HTTP — front it with a reverse proxy for TLS. Pin the job to the node holding the volume with constraints.