sophies-stuff #36
5 changed files with 134 additions and 5 deletions
|
@ -11,6 +11,9 @@ insert_final_newline = true
|
||||||
[*.yaml]
|
[*.yaml]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.exs]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
# possibly sql dumps
|
# possibly sql dumps
|
||||||
[*.sql]
|
[*.sql]
|
||||||
indent_size = unset
|
indent_size = unset
|
||||||
|
|
|
@ -6,11 +6,6 @@ easily find available ports for other bundles.
|
||||||
## TCP
|
## TCP
|
||||||
Rule of thumb: keep ports below 10000 free for stuff that reserves ports.
|
Rule of thumb: keep ports below 10000 free for stuff that reserves ports.
|
||||||
|
|
||||||
| Port range | reserved for |
|
|
||||||
| ----------- | ------------ |
|
|
||||||
| 200.. | Matrix |
|
|
||||||
| 220.. | Generic Web services |
|
|
||||||
|
|
||||||
| Port | bundle | usage |
|
| Port | bundle | usage |
|
||||||
| ----------- | -------------------- | ----- |
|
| ----------- | -------------------- | ----- |
|
||||||
| 22 | | sshd |
|
| 22 | | sshd |
|
||||||
|
@ -38,6 +33,7 @@ Rule of thumb: keep ports below 10000 free for stuff that reserves ports.
|
||||||
| 20080 | matrix-synapse | client, federation |
|
| 20080 | matrix-synapse | client, federation |
|
||||||
| 20081 | matrix-synapse | prometheus metrics |
|
| 20081 | matrix-synapse | prometheus metrics |
|
||||||
| 20090 | matrix-media-repo | media_repo |
|
| 20090 | matrix-media-repo | media_repo |
|
||||||
|
| 21000 | pleroma | pleroma |
|
||||||
| 22000 | gitea | gitea |
|
| 22000 | gitea | gitea |
|
||||||
| 22010 | jenkins-ci | Jenkins CI |
|
| 22010 | jenkins-ci | Jenkins CI |
|
||||||
| 22020 | travelynx | Travelynx Web |
|
| 22020 | travelynx | Travelynx Web |
|
||||||
|
|
44
bundles/pleroma/files/pleroma.config.exs
Normal file
44
bundles/pleroma/files/pleroma.config.exs
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
import Config
|
||||||
|
|
||||||
|
config :pleroma, Pleroma.Web.Endpoint,
|
||||||
|
url: [host: "${node.metadata['pleroma']['url']}", scheme: "https", port: 443],
|
||||||
|
http: [port: 21000, ip: {127, 0, 0, 1}],
|
||||||
|
secret_key_base: "${node.metadata['pleroma']['secret_key']}",
|
||||||
|
secure_cookie_flag: true
|
||||||
|
|
||||||
|
config :pleroma, :http_security,
|
||||||
|
enabled: false,
|
||||||
|
sts: true,
|
||||||
|
referrer_policy: "same-origin"
|
||||||
|
|
||||||
|
config :pleroma, :instance,
|
||||||
|
name: "${node.metadata['pleroma']['title']}",
|
||||||
|
description: "${node.metadata['pleroma']['description']}",
|
||||||
|
email: "${node.metadata['pleroma']['admin_email']}",
|
||||||
|
limit: ${node.metadata['pleroma'].get('limit_chars', 500)},
|
||||||
|
registrations_open: ${str(node.metadata['pleroma'].get('signup_enabled', False)).lower()},
|
||||||
|
invites_enabled: ${str(node.metadata['pleroma'].get('invite_enabled', True)).lower()},
|
||||||
|
static_dir: "/var/pleroma/static/"
|
||||||
|
|
||||||
|
config :pleroma, Pleroma.Upload,
|
||||||
|
uploader: Pleroma.Uploaders.Local,
|
||||||
|
filters: [Pleroma.Upload.Filter.Dedupe]
|
||||||
|
|
||||||
|
config :pleroma, Pleroma.Uploaders.Local,
|
||||||
|
uploads: "/var/pleroma/uploads/"
|
||||||
|
|
||||||
|
config :pleroma, :media_proxy,
|
||||||
|
enabled: false,
|
||||||
|
redirect_on_failure: true
|
||||||
|
#base_url: "https://cache.pleroma.social"
|
||||||
|
|
||||||
|
# Configure your database
|
||||||
|
config :pleroma, Pleroma.Repo,
|
||||||
|
adapter: Ecto.Adapters.Postgres,
|
||||||
|
username: "pleroma",
|
||||||
|
password: "${node.metadata['postgresql']['roles']['pleroma']['password']}",
|
||||||
|
database: "pleroma",
|
||||||
|
hostname: "localhost",
|
||||||
|
pool_size: 10,
|
||||||
|
timeout: 60000,
|
||||||
|
pool_timeout: 60000
|
55
bundles/pleroma/items.py
Normal file
55
bundles/pleroma/items.py
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
version = node.metadata['pleroma']['version']
|
||||||
|
|
||||||
|
users = {
|
||||||
|
'pleroma': {
|
||||||
|
'home': '/opt/pleroma',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
directories = {
|
||||||
|
'/opt/pleroma': {},
|
||||||
|
'/var/pleroma': {
|
||||||
|
'owner': 'pleroma',
|
||||||
|
},
|
||||||
|
'/var/pleroma/uploads': {
|
||||||
|
'owner': 'pleroma',
|
||||||
|
},
|
||||||
|
'/var/pleroma/static': {
|
||||||
|
'owner': 'pleroma',
|
||||||
|
},
|
||||||
|
'/var/pleroma/static/emoji': {
|
||||||
|
'owner': 'pleroma',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if node.has_bundle('zfs'):
|
||||||
|
directories['/var/pleroma']['needs'] = {
|
||||||
|
'zfs_dataset:tank/pleroma-data',
|
||||||
|
}
|
||||||
|
|
||||||
|
actions = {
|
||||||
|
'pleroma_download_release': {
|
||||||
|
'command': \
|
||||||
|
'cd /opt/pleroma/ && '\
|
||||||
|
f'wget -O/opt/pleroma/pleroma.zip https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=amd64 && '\
|
||||||
|
'rm -rf release && '\
|
||||||
|
'unzip /opt/pleroma/pleroma.zip',
|
||||||
|
'unless': f'[ "$(cat /opt/pleroma/.bundlewrap_installed_version)" = "{version}" ]',
|
||||||
|
'needs': {
|
||||||
|
'directory:/opt/pleroma',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'pleroma_create_schema': {
|
||||||
|
'triggered': True,
|
||||||
|
'command': 'sudo -u pleroma /opt/pleroma/src/rel/files/bin/pleroma_ctl create',
|
||||||
|
'triggered_by': {
|
||||||
|
'postgres_db:pleroma',
|
||||||
|
},
|
||||||
|
}.
|
||||||
|
}
|
||||||
|
|
||||||
|
files = {
|
||||||
|
'/opt/pleroma/pleroma.config.exs': {
|
||||||
|
'content_type': 'mako',
|
||||||
|
},
|
||||||
|
}
|
31
bundles/pleroma/metadata.py
Normal file
31
bundles/pleroma/metadata.py
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
defaults = {
|
||||||
|
'apt': {
|
||||||
|
'packages': {
|
||||||
|
'imagemagick': {},
|
||||||
|
'ffmpeg': {},
|
||||||
|
'libimage-exiftool-perl': {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'zfs': {
|
||||||
|
'datasets': {
|
||||||
|
'tank/pleroma-data': {
|
||||||
|
'mountpoint': '/var/pleroma',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'pleroma': {
|
||||||
|
'admin_email': 'pleroma@{}'.format(node.hostname),
|
||||||
|
},
|
||||||
|
'postgresql': {
|
||||||
|
'roles': {
|
||||||
|
'pleroma': {
|
||||||
|
'password': repo.vault.password_for(f'{node.name} postgresql pleroma'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'databases': {
|
||||||
|
'pleroma': {
|
||||||
|
'owner': 'pleroma',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
Loading…
Reference in a new issue