Skip to content
This repository was archived by the owner on Jan 4, 2026. It is now read-only.

Commit a58ea72

Browse files
authored
add forgejo, ghost, harbor, and writefreely as default (experimental) apps and update all deps (#360)
* add forgejo and ghost as default apps and update all deps * move keycloak to the experimental section * add harbor app and add more important bits for forgejo and ghost * add more basic experimental docs * clean up ghost to use mysql instead of postgresql * update more ghost settings * add noting of experimental nature of new apps * fix ghost zitadel odic creation * update forgejo and ghost backup values and argo paths * include ghost admin credentials * fix ghost credentials grab and add writefreely kind of * no valkey required * fix zitadel issue with harbor * add zitadel stuff to harbor * fix harbor zitadel credentials * add tolerations commented out for ghost and forgejo * fix comments on default confg * fix pvc capacity for ghost * add basic writefreely app * add some more docs * add writefreely to mkdocs
1 parent 0ba5530 commit a58ea72

18 files changed

Lines changed: 4823 additions & 1765 deletions

File tree

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
[Forgejo](https://forgejo.org/) is an open source self hosted git server and frontend.
2+
3+
⚠️ *forgejo is an _experimental_ smol-k8s-lab app, so it may be unstable*
4+
5+
## Example configuration
6+
7+
```yaml
8+
apps:
9+
forgejo:
10+
description: |
11+
[magenta]⚠️ Experimental[/magenta]
12+
[link=https://forgejo.org/]forgejo[/link] is an open source self hosted git server and frontend.
13+
14+
To provide sensitive values via environment variables to smol-k8s-lab use:
15+
- FORGEJO_S3_BACKUP_SECRET_KEY
16+
- FORGEJO_S3_BACKUP_ACCESS_ID
17+
- FORGEJO_RESTIC_REPO_PASSWORD
18+
enabled: false
19+
init:
20+
enabled: false
21+
backups:
22+
# cronjob syntax schedule to run forgejo pvc backups
23+
pvc_schedule: 10 0 * * *
24+
# cronjob syntax (with SECONDS field) for forgejo postgres backups
25+
# must happen at least 10 minutes before pvc backups, to avoid corruption
26+
# due to missing files. This is because the backup shows as completed before
27+
# it actually is
28+
postgres_schedule: 0 0 0 * * *
29+
s3:
30+
# these are for pushing remote backups of your local s3 storage, for speed and cost optimization
31+
endpoint: ""
32+
bucket: ""
33+
region: ""
34+
secret_access_key:
35+
value_from:
36+
env: FORGEJO_S3_BACKUP_SECRET_KEY
37+
access_key_id:
38+
value_from:
39+
env: FORGEJO_S3_BACKUP_ACCESS_ID
40+
restic_repo_password:
41+
value_from:
42+
env: FORGEJO_RESTIC_REPO_PASSWORD
43+
argo:
44+
# secrets keys to make available to Argo CD ApplicationSets
45+
secret_keys:
46+
# hostname that users go to in the browser
47+
hostname: ""
48+
## you can delete these if you're not using tolerations/affinity
49+
# toleration_key: ""
50+
# toleration_operator: ""
51+
# toleration_value: ""
52+
# toleration_effect: ""
53+
## these are for node affinity, delete if not in use
54+
# affinity_key: ""
55+
# affinity_value: ""
56+
# git repo to install the Argo CD app from
57+
repo: https://github.com/small-hack/argocd-apps
58+
# path in the argo repo to point to. Trailing slash very important!
59+
path: forgejo/app_of_apps/
60+
# either the branch or tag to point at in the argo repo above
61+
revision: main
62+
# kubernetes cluster to install the k8s app into, defaults to Argo CD default
63+
cluster: https://kubernetes.default.svc
64+
# namespace to install the k8s app in
65+
namespace: forgejo
66+
# recurse directories in the git repo
67+
directory_recursion: false
68+
# source repos for Argo CD App Project (in addition to argo.repo)
69+
project:
70+
name: forgejo
71+
# depending on if you use seaweedfs or minio, you can remove the other source repo
72+
source_repos:
73+
- code.forgejo.org
74+
destination:
75+
# automatically includes the app's namespace and argocd's namespace
76+
namespaces: []
77+
```
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
[Ghost](https://ghost.org/) is an open source blogging platform.
2+
3+
⚠️ *ghost is an _experimental_ smol-k8s-lab app, so it may be unstable*
4+
5+
## Example configuration
6+
7+
```yaml
8+
apps:
9+
ghost:
10+
description: |
11+
[magenta]⚠️ Experimental[/magenta]
12+
[link=https://ghost.org/]ghost[/link] is an open source blogging platform.
13+
14+
To provide sensitive values via environment variables to smol-k8s-lab use:
15+
- GHOST_SMTP_PASSWORD
16+
- GHOST_S3_BACKUP_SECRET_KEY
17+
- GHOST_S3_BACKUP_ACCESS_ID
18+
- GHOST_RESTIC_REPO_PASSWORD
19+
enabled: false
20+
init:
21+
enabled: false
22+
values:
23+
smtp_password:
24+
value_from:
25+
env: GHOST_SMTP_PASSWORD
26+
backups:
27+
# cronjob syntax schedule to run ghost pvc backups
28+
pvc_schedule: 10 0 * * *
29+
# cronjob syntax (with SECONDS field) for ghost postgres backups
30+
# must happen at least 10 minutes before pvc backups, to avoid corruption
31+
# due to missing files. This is because the backup shows as completed before
32+
# it actually is
33+
postgres_schedule: 0 0 0 * * *
34+
s3:
35+
# these are for pushing remote backups of your local s3 storage, for speed and cost optimization
36+
endpoint: ""
37+
bucket: ""
38+
region: ""
39+
secret_access_key:
40+
value_from:
41+
env: GHOST_S3_BACKUP_SECRET_KEY
42+
access_key_id:
43+
value_from:
44+
env: GHOST_S3_BACKUP_ACCESS_ID
45+
restic_repo_password:
46+
value_from:
47+
env: GHOST_RESTIC_REPO_PASSWORD
48+
argo:
49+
# secrets keys to make available to Argo CD ApplicationSets
50+
secret_keys:
51+
## you can delete these if you're not using tolerations/affinity
52+
# toleration_key: ""
53+
# toleration_operator: ""
54+
# toleration_value: ""
55+
# toleration_effect: ""
56+
## these are for node affinity, delete if not in use
57+
# affinity_key: ""
58+
# affinity_value: ""
59+
# hostname that users go to in the browser
60+
hostname: ""
61+
# admin username
62+
admin_user: "ghost"
63+
# admin email
64+
admin_email: ""
65+
# title of your title
66+
blog_title: ""
67+
# smtp server
68+
smtp_host: ""
69+
# smtp port
70+
smtp_port: ""
71+
# smtp username
72+
smtp_user: ""
73+
# ghost mysql pvc capacity
74+
mysql_pvc_capacity: 5Gi
75+
# ghost pvc capacity
76+
pvc_capacity: 10Gi
77+
# git repo to install the Argo CD app from
78+
repo: https://github.com/small-hack/argocd-apps
79+
# path in the argo repo to point to. Trailing slash very important!
80+
path: ghost/app_of_apps/
81+
# either the branch or tag to point at in the argo repo above
82+
revision: main
83+
# kubernetes cluster to install the k8s app into, defaults to Argo CD default
84+
cluster: https://kubernetes.default.svc
85+
# namespace to install the k8s app in
86+
namespace: ghost
87+
# recurse directories in the git repo
88+
directory_recursion: false
89+
# source repos for Argo CD App Project (in addition to argo.repo)
90+
project:
91+
name: ghost
92+
# depending on if you use seaweedfs or minio, you can remove the other source repo
93+
source_repos:
94+
- registry-1.docker.io
95+
destination:
96+
# automatically includes the app's namespace and argocd's namespace
97+
namespaces: []
98+
```
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
[Harbor](https://goharbor.io/) is a self hosted OCI registry and includes plugins for security scanning. You can use it for anything that can be built as an OCI e.g. docker, helm, and python. From their website:
2+
3+
> Harbor is an open source trusted cloud native registry project that stores, signs, and scans content. Harbor extends the open source Docker Distribution by adding the functionalities usually required by users such as security, identity and management. Having a registry closer to the build and run environment can improve the image transfer efficiency. Harbor supports replication of images between registries, and also offers advanced security features such as user management, access control and activity auditing.
4+
5+
We install the helm chart from [goharbor/harbor-helm](https://github.com/goharbor/harbor-helm) as part of an Argo CD ApplicationSet.
6+
7+
⚠️ *Harbor is an _experimental_ smol-k8s-lab app, so it may be unstable*
8+
9+
## Example configuration
10+
11+
```yaml
12+
apps:
13+
harbor:
14+
description: |
15+
[magenta]⚠️ Experimental[/magenta]
16+
󰨀 [link=https://goharbor.io/]Harbor[/link] is an open source trusted cloud native registry project that stores, signs, and scans content. Harbor extends the open source Docker Distribution by adding the functionalities usually required by users such as security, identity and management. Having a registry closer to the build and run environment can improve the image transfer efficiency. Harbor supports replication of images between registries, and also offers advanced security features such as user management, access control and activity auditing.
17+
18+
We install the helm chart from [link=https://github.com/goharbor/harbor-helm]github.com/goharbor/harbor-helm[/link].
19+
20+
smol-k8s-lab supports initializing harbor, by setting up your hostname, valkey credentials, postgresql credentials, and an admin user credentials. We pass all credentials as Secrets in the namespace and optionally save them to Bitwarden.
21+
22+
smol-k8s-lab also creates a local s3 endpoint and as well as S3 bucket and credentials if you enable set harbor.argo.secret_keys.s3_provider to "minio" or "seaweedfs". Both seaweedfs and minio require you to specify a remote s3 endpoint, bucket, region, and accessID/secretKey so that we can make sure you have remote backups.
23+
24+
To provide sensitive values via environment variables to smol-k8s-lab use:
25+
- HARBOR_S3_BACKUP_ACCESS_ID
26+
- HARBOR_S3_BACKUP_SECRET_KEY
27+
- HARBOR_RESTIC_REPO_PASSWORD
28+
enabled: false
29+
init:
30+
enabled: true
31+
restore:
32+
enabled: false
33+
cnpg_restore: true
34+
restic_snapshot_ids:
35+
# seaweedfs_master: latest
36+
seaweedfs_volume: latest
37+
seaweedfs_filer: latest
38+
harbor_valkey_primary: latest
39+
harbor_valkey_replica: latest
40+
values:
41+
# admin user
42+
admin_user: "admin"
43+
# admin user's email
44+
admin_email: ""
45+
backups:
46+
# cronjob syntax schedule to run harbor pvc backups
47+
pvc_schedule: 10 0 * * *
48+
# cronjob syntax (with SECONDS field) for harbor postgres backups
49+
# must happen at least 10 minutes before pvc backups, to avoid corruption
50+
# due to missing files. This is because the backup shows as completed before
51+
# it actually is
52+
postgres_schedule: 0 0 0 * * *
53+
s3:
54+
# these are for pushing remote backups of your local s3 storage, for speed and cost optimization
55+
endpoint: ""
56+
bucket: ""
57+
region: ""
58+
secret_access_key:
59+
value_from:
60+
env: HARBOR_S3_BACKUP_SECRET_KEY
61+
access_key_id:
62+
value_from:
63+
env: HARBOR_S3_BACKUP_ACCESS_ID
64+
restic_repo_password:
65+
value_from:
66+
env: HARBOR_RESTIC_REPO_PASSWORD
67+
argo:
68+
# secrets keys to make available to Argo CD ApplicationSets
69+
secret_keys:
70+
# you can delete these if you're not using tolerations/affinity
71+
toleration_key: ""
72+
toleration_operator: ""
73+
toleration_value: ""
74+
toleration_effect: ""
75+
# these are for node affinity, delete if not in use
76+
affinity_key: ""
77+
affinity_value: ""
78+
# admin user for your harbor instance
79+
admin_user: admin
80+
# hostname that users go to in the browser
81+
hostname: ""
82+
# set the local s3 provider for harbor's public data in one bucket
83+
# and private database backups in another. can be minio or seaweedfs
84+
s3_provider: seaweedfs
85+
# how large the backing pvc's capacity should be for minio or seaweedfs
86+
s3_pvc_capacity: 120Gi
87+
# local s3 endpoint for postgresql backups, backed up constantly
88+
s3_endpoint: ""
89+
s3_region: eu-west-1
90+
# enable persistence for valkey - recommended
91+
valkey_pvc_enabled: 'true'
92+
# size of valkey pvc storage
93+
valkey_storage: 3Gi
94+
valkey_storage_class: local-path
95+
valkey_access_mode: ReadWriteOnce
96+
# git repo to install the Argo CD app from
97+
repo: https://github.com/small-hack/argocd-apps
98+
# path in the argo repo to point to. Trailing slash very important!
99+
path: demo/harbor/app_of_apps/
100+
# either the branch or tag to point at in the argo repo above
101+
revision: main
102+
# kubernetes cluster to install the k8s app into, defaults to Argo CD default
103+
cluster: https://kubernetes.default.svc
104+
# namespace to install the k8s app in
105+
namespace: harbor
106+
# recurse directories in the git repo
107+
directory_recursion: false
108+
# source repos for Argo CD App Project (in addition to argo.repo)
109+
project:
110+
name: harbor
111+
# depending on if you use seaweedfs or minio, you can remove the other source repo
112+
source_repos:
113+
- registry-1.docker.io
114+
- https://small-hack.github.io/cloudnative-pg-cluster-chart
115+
- https://operator.min.io/
116+
- https://seaweedfs.github.io/seaweedfs/helm
117+
- https://helm.goharbor.io
118+
destination:
119+
# automatically includes the app's namespace and argocd's namespace
120+
namespaces: []
121+
```
File renamed without changes.
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
[writefreely](https://writefreely.org/) is a slim blogging platform.
2+
3+
This is an *Experimental* app.
4+
5+
# Example config
6+
7+
```yaml
8+
apps:
9+
writefreely:
10+
description: |
11+
[magenta]⚠️ Experimental[/magenta]
12+
[link=https://writefreely.org/]writefreely[/link] is a slim open source blogging platform.
13+
14+
To provide sensitive values via environment variables to smol-k8s-lab use:
15+
- WRITEFREELY_SMTP_PASSWORD
16+
- WRITEFREELY_S3_BACKUP_SECRET_KEY
17+
- WRITEFREELY_S3_BACKUP_ACCESS_ID
18+
- WRITEFREELY_RESTIC_REPO_PASSWORD
19+
enabled: false
20+
init:
21+
enabled: false
22+
values:
23+
smtp_password:
24+
value_from:
25+
env: WRITEFREELY_SMTP_PASSWORD
26+
backups:
27+
# cronjob syntax schedule to run writefreely pvc backups
28+
pvc_schedule: 10 0 * * *
29+
# cronjob syntax (with SECONDS field) for writefreely postgres backups
30+
# must happen at least 10 minutes before pvc backups, to avoid corruption
31+
# due to missing files. This is because the backup shows as completed before
32+
# it actually is
33+
postgres_schedule: 0 0 0 * * *
34+
s3:
35+
# these are for pushing remote backups of your local s3 storage, for speed and cost optimization
36+
endpoint: ""
37+
bucket: ""
38+
region: ""
39+
secret_access_key:
40+
value_from:
41+
env: WRITEFREELY_S3_BACKUP_SECRET_KEY
42+
access_key_id:
43+
value_from:
44+
env: WRITEFREELY_S3_BACKUP_ACCESS_ID
45+
restic_repo_password:
46+
value_from:
47+
env: WRITEFREELY_RESTIC_REPO_PASSWORD
48+
argo:
49+
# secrets keys to make available to Argo CD ApplicationSets
50+
secret_keys:
51+
## you can delete these if you're not using tolerations/affinity
52+
# toleration_key: ""
53+
# toleration_operator: ""
54+
# toleration_value: ""
55+
# toleration_effect: ""
56+
## these are for node affinity, delete if not in use
57+
# affinity_key: ""
58+
# affinity_value: ""
59+
# hostname that users go to in the browser
60+
hostname: ""
61+
# admin username
62+
admin_user: "writefreely"
63+
# admin email
64+
admin_email: ""
65+
# title of your title
66+
blog_title: ""
67+
# smtp server
68+
smtp_host: ""
69+
# smtp port
70+
smtp_port: ""
71+
# smtp username
72+
smtp_user: ""
73+
# writefreely mysql pvc capacity
74+
mysql_pvc_capacity: 5Gi
75+
# writefreely pvc capacity
76+
pvc_capacity: 10Gi
77+
# git repo to install the Argo CD app from
78+
repo: https://github.com/small-hack/argocd-apps
79+
# path in the argo repo to point to. Trailing slash very important!
80+
path: writefreely/app_of_apps/
81+
# either the branch or tag to point at in the argo repo above
82+
revision: main
83+
# kubernetes cluster to install the k8s app into, defaults to Argo CD default
84+
cluster: https://kubernetes.default.svc
85+
# namespace to install the k8s app in
86+
namespace: writefreely
87+
# recurse directories in the git repo
88+
directory_recursion: false
89+
# source repos for Argo CD App Project (in addition to argo.repo)
90+
project:
91+
name: writefreely
92+
# depending on if you use seaweedfs or minio, you can remove the other source repo
93+
source_repos:
94+
- registry-1.docker.io
95+
destination:
96+
# automatically includes the app's namespace and argocd's namespace
97+
namespaces: []
98+
```

0 commit comments

Comments
 (0)