Resources
Linkwarden
-
db
postgres
Ready
-
app
ghcr.io/linkwarden/linkwarden:latest
Running
-
ingress
links.example.com
Live
Parameters
Deploy Linkwarden
App Name required
links
Domain required
links.example.com
Auth secret
•••••••••••••••• generated
Generated if left empty
Disable registration
Off
Links per user
30000
Storage
10Gi
Volume for archived pages
Enable HTTPS
On
Cancel Deploy
YAML
apiVersion: leaf/v1
kind: Template
metadata:
name: linkwarden
displayName: 'Linkwarden'
description: 'Collect, organise and archive links, with full-page snapshots and collaborative collections.'
icon: https://github.com/linkwarden.png?size=256
version: '1.0.0'
category: reader
tags: ['bookmarks', 'archive', 'links']
keywords: ['pocket', 'raindrop', 'linkding', 'wayback', 'read later']
homepage: https://linkwarden.app
license: AGPL-3.0-only
parameters:
- name: appName
displayName: 'App Name'
type: string
default: 'links'
required: true
validation:
pattern: '^[a-z][a-z0-9-]{1,58}[a-z0-9]$'
message: 'Must be lowercase alphanumeric with hyphens, 3-60 chars'
- name: domain
displayName: 'Domain'
type: string
required: true
placeholder: 'links.example.com'
- name: nextauthSecret
displayName: 'Auth secret'
description: 'Generated if left empty'
type: secret
validation:
min: 32
- name: disableRegistration
displayName: 'Disable registration'
type: boolean
default: false
- name: maxLinksPerUser
displayName: 'Links per user'
type: number
default: 30000
validation:
min: 1
- name: storage
displayName: 'Storage'
description: 'Volume for archived pages'
type: string
default: '10Gi'
- name: enableTls
displayName: 'Enable HTTPS'
type: boolean
default: true
resources:
- name: db
type: database
config:
name: '{{ params.appName }}-db'
- name: app
type: deployment
config:
name: '{{ params.appName }}'
image: ghcr.io/linkwarden/linkwarden:latest
replicas: 1
ports:
- name: http
containerPort: 3000
servicePort: 3000
protocol: TCP
volumes:
- name: data
type: pvc
mountPath: /data/data
storageSize: '{{ params.storage }}'
env:
- key: NEXTAUTH_SECRET
value: '{{ params.nextauthSecret }}'
secret: true
- key: NEXTAUTH_URL
value: 'https://{{ params.domain }}/api/v1/auth'
- key: DATABASE_URL
value: '{{ resources.db.connectionString }}'
secret: true
- key: NEXT_PUBLIC_DISABLE_REGISTRATION
value: '{{ params.disableRegistration }}'
- key: MAX_LINKS_PER_USER
value: '{{ params.maxLinksPerUser }}'
- name: ingress
type: ingress
config:
host: '{{ params.domain }}'
tlsEnabled: '{{ params.enableTls }}'
routes:
- path: /
serviceName: '{{ resources.app.serviceName }}'
servicePort: 3000