diff --git a/adguard.tf b/adguard.tf new file mode 100644 index 0000000..0295e23 --- /dev/null +++ b/adguard.tf @@ -0,0 +1,34 @@ +resource "incus_storage_volume" "adguard_opt_adguard_data" { + name = "adguard_opt_adguard_data" + pool = incus_storage_pool.default.name +} + +resource "incus_storage_volume" "adguard_etc_adguard" { + name = "adguard_etc_adguard" + pool = incus_storage_pool.default.name +} + +resource "incus_instance" "adguard" { + name = "adguard" + image = "laminar.incus:adguard-0.107.54-4benoitjpnet" + + device { + name = "opt_adguard_data" + type = "disk" + properties = { + path = "/opt/adguard/data" + source = incus_storage_volume.adguard_opt_adguard_data.name + pool = incus_storage_pool.default.name + } + } + + device { + name = "etc_adguard" + type = "disk" + properties = { + path = "/etc/adguard" + source = incus_storage_volume.adguard_etc_adguard.name + pool = incus_storage_pool.default.name + } + } +} diff --git a/kanboard.tf b/kanboard.tf new file mode 100644 index 0000000..9eb1594 --- /dev/null +++ b/kanboard.tf @@ -0,0 +1,24 @@ +resource "incus_storage_volume" "kanboard_var_www_kanboard_data" { + name = "kanboard_var_www_kanboard_data" + pool = incus_storage_pool.default.name + config = { + "initial.gid" = "33" + "initial.uid" = "33" + "initial.mode" = "770" + } +} + +resource "incus_instance" "kanboard" { + name = "kanboard" + image = "laminar.incus:kanboard-1.2.43-1benoitjpnet" + + device { + name = "var_www_kanboard_data" + type = "disk" + properties = { + path = "/var/www/kanboard/data" + source = incus_storage_volume.kanboard_var_www_kanboard_data.name + pool = incus_storage_pool.default.name + } + } +} diff --git a/mastodon.tf b/mastodon.tf index e0923c9..619e500 100644 --- a/mastodon.tf +++ b/mastodon.tf @@ -1,4 +1,24 @@ -resource "incus_instance" "mastodon" { - name = "mastodon" - image = "d90ef7865662" +resource "incus_storage_volume" "mastodon2_home_mastodon_live_public_system" { + name = "mastodon2_home_mastodon_live_public_system" + pool = incus_storage_pool.default.name + config = { + "initial.gid" = "1001" + "initial.uid" = "1001" + "initial.mode" = "755" + } +} + +resource "incus_instance" "mastodon2" { + name = "mastodon2" + image = "laminar.incus:mastodon-4.3.3-1benoitjpnet" + + device { + name = "home_mastodon_live_public_system" + type = "disk" + properties = { + path = "/home/mastodon/live/public/system" + source = incus_storage_volume.mastodon2_home_mastodon_live_public_system.name + pool = incus_storage_pool.default.name + } + } } diff --git a/miniflux.tf b/miniflux.tf new file mode 100644 index 0000000..8f85d6c --- /dev/null +++ b/miniflux.tf @@ -0,0 +1,4 @@ +resource "incus_instance" "miniflux" { + name = "miniflux" + image = "laminar.incus:miniflux-2.2.5-3benoitjpnet" +} diff --git a/photoprism.tf b/photoprism.tf new file mode 100644 index 0000000..2ed30b3 --- /dev/null +++ b/photoprism.tf @@ -0,0 +1,63 @@ +resource "incus_storage_volume" "photoprism_opt_photoprism_config" { + name = "photoprism_opt_photoprism_config" + pool = incus_storage_pool.default.name + config = { + "initial.gid" = "1001" + "initial.uid" = "1001" + "initial.mode" = "755" + } +} + +resource "incus_storage_volume" "photoprism_opt_photoprism_storage" { + name = "photoprism_opt_photoprism_storage" + pool = incus_storage_pool.default.name + config = { + "initial.gid" = "1001" + "initial.uid" = "1001" + "initial.mode" = "755" + } +} + +resource "incus_storage_volume" "photoprism_opt_photoprism_originals" { + name = "photoprism_opt_photoprism_originals" + pool = incus_storage_pool.default.name + config = { + "initial.gid" = "1001" + "initial.uid" = "1001" + "initial.mode" = "755" + } +} + + +resource "incus_instance" "photoprism" { + name = "photoprism" + image = "laminar.incus:photoprism-1.2409.15+240915-e1280b2fb-3benoitjpnet" + + device { + name = "photoprism_opt_photoprism_config" + type = "disk" + properties = { + path = "/opt/photoprism/config" + source = incus_storage_volume.photoprism_opt_photoprism_config.name + pool = incus_storage_pool.default.name + } + } + device { + name = "photoprism_opt_photoprism_storage" + type = "disk" + properties = { + path = "/opt/photoprism/storage" + source = incus_storage_volume.photoprism_opt_photoprism_storage.name + pool = incus_storage_pool.default.name + } + } + device { + name = "photoprism_opt_photoprism_originals" + type = "disk" + properties = { + path = "/opt/photoprism/originals" + source = incus_storage_volume.photoprism_opt_photoprism_originals.name + pool = incus_storage_pool.default.name + } + } +} diff --git a/vaultwarden.tf b/vaultwarden.tf new file mode 100644 index 0000000..b2102a0 --- /dev/null +++ b/vaultwarden.tf @@ -0,0 +1,38 @@ +resource "incus_storage_volume" "vaultwarden_data" { + name = "vaultwarden_data" + pool = incus_storage_pool.default.name +} + +# TODO: Run as UID 1000 not 0 as the default OCI image runs with 0... + +resource "incus_instance" "vaultwarden" { + name = "vaultwarden" + image = "docker:vaultwarden/server:1.33.2-alpine" + + config = { + "environment.DOMAIN" = "https://vaultwarden.benoit.jp.net" + "environment.SIGNUPS_ALLOWED" = "false" + "environment.SIGNUPS_VERIFY" = "true" + "environment.SIGNUPS_VERIFY_RESEND_TIME" = "600" + "environment.IP_HEADER" = "X-Forwarded-For" + "environment.REQUIRE_DEVICE_EMAIL" = "true" + "environment.SMTP_HOST" = "mail.benoit.jp.net" + "environment.SMTP_FROM" = "pwd-no-reply@benoit.jp.net" + "environment.SMTP_FROM_NAME" = "Vaultwarden" + "environment.SMTP_USERNAME" = "pwd-no-reply@benoit.jp.net" + "environment.SMTP_PASSWORD" = "GET_ME_FROM_VAULTWARDEN" + "environment.SMTP_SECURITY" = "force_tls" + "environment.SMTP_PORT" = "465" + "environment.ROCKET_ADDRESS" = "::" + } + + device { + name = "data" + type = "disk" + properties = { + path = "/data" + source = incus_storage_volume.vaultwarden_data.name + pool = incus_storage_pool.default.name + } + } +} diff --git a/www.tf b/www.tf new file mode 100644 index 0000000..19999c0 --- /dev/null +++ b/www.tf @@ -0,0 +1,23 @@ +# https://wiki.alpinelinux.org/wiki/Nginx +# https://wiki.alpinelinux.org/wiki/Setting_up_a_SSH_server + +resource "incus_storage_volume" "www" { + name = "www" + pool = incus_storage_pool.default.name +} + +resource "incus_instance" "www" { + name = "www" + image = "images:alpine/3.21" + + device { + name = "www" + type = "disk" + properties = { + path = "/www" + source = incus_storage_volume.www.name + pool = incus_storage_pool.default.name + } + } +} +