Commit Graph
1408 Commits
Author SHA1 Message Date
raucao 7733e48266 Update Ubuntu base image to release-20261017
Refresh the noble cloud image so newly created VMs start with fewer pending
package upgrades. Old base images are left in place.
2026-10-24 15:29:34 +02:00
raucao f9deefbc63 Upgrade RTL to v0.15.15
Pin v0.15.15 and set blockExplorerUrl (config-only since 0.15.14). Discard
local checkout changes before the pinned checkout, and use
`npm ci --omit=dev --legacy-peer-deps` per upstream guidance.
2026-10-24 15:29:30 +02:00
raucao 4dc9c18d46 Move Node services onto patched releases for the eMudhra CA incident
Bump Node to patched releases (mastodon/sockethub 24.22.1, RTL 22.23.4).
Force the pinned major's latest patch in kosmos-nodejs: nodejs_install only
selects the repo major and a bare `package nodejs` never upgrades an already
installed package.

For hosts stuck on Node 16 (no patched 16.x), run the services with
NODE_OPTIONS=--use-openssl-ca so they use the patched system trust store:
ipfs-pinner, kredits-github, hubot botka/hal8000, sockethub.
2026-10-24 15:29:21 +02:00
raucao 2dcc867268 Vendor CAcert roots instead of fetching from cacert.org
cacert.org is intermittently unreachable, which fails bootstraps at the
remote_file step. Ship both roots in the cookbook and install them with
cookbook_file; contents match what was already installed fleet-wide.
2026-10-24 15:29:13 +02:00
raucao 8661a43800 Support Cinc in kosmos-base
Resolve the client config dir at runtime (Chef::Config[:config_file] /
:client_d_dir) instead of hardcoding /etc/chef, and create client.d when
missing so fresh nodes work.

Reload only the attributes file we just wrote, not the whole client.rb:
reloading client.rb reset chef_server_url and dropped knife-zero's -S (TCP)
override, so later server calls fell back to socketless chefzero and failed
with No socketless Cinc Zero server.
2026-10-24 15:29:07 +02:00
raucao dea89ea2c0 Upgrade Sockethub to 5.0.0-beta.0, serve info page 2026-10-12 22:33:22 +02:00
raucao c1ccaf482a Upgrade Gitea Runner to 5.0.0 2026-10-11 12:12:52 +02:00
raucao 8ac0b965b2 Declare the search deploy unit before the migration chain
The migration chain starts mastodon-search-deploy.service immediately, but the systemd_unit resource was declared later in the recipe, so the unit did not exist yet and systemctl failed with 'Unit not found'.
2026-10-08 12:21:24 +02:00
raucao af4983d747 Record revision stamps as the mastodon user
The stamp files' lazy git call ran as root, which git rejects on the mastodon-owned repository (dubious ownership), silently writing an empty stamp. Use execute resources with the mastodon user instead so git works and the revision is recorded.
2026-10-08 11:51:23 +02:00
raucao 1b564c285d Give the mastodon user a /home/mastodon home
The mastodon user's home was /opt/mastodon, i.e. the clone destination, so writing the SSH deploy key into ~/.ssh made the directory non-empty and Chef's git resource silently skipped cloning (it only clones into an empty directory). Use a dedicated /home/mastodon home for the user and keep the clone destination separate. Also clear a non-git (partial) clone destination before cloning.
2026-10-08 11:43:47 +02:00
raucao 0696d03374 Replace the removed bundler --deployment flag
Bundler 4 (shipped with Ruby 4) removed --deployment. Use 'bundle config set --local deployment true' (frozen + vendor/bundle) and the 'without' setting instead, in the Mastodon, akkounts and liquor-cabinet cookbooks.
2026-10-08 11:34:46 +02:00
raucao b0718a5dac Ensure the SSH deploy key ends with a newline
OpenSSH's PEM parser rejects a private key file without a trailing newline ('error in libcrypto').
2026-10-08 11:30:09 +02:00
raucao a3877e620e Create the mastodon home directory in the dependencies recipe
The user resource does not manage the home directory, so removing /opt/mastodon broke the build phase when it tried to create /opt/mastodon/.ssh.
2026-10-07 19:49:52 +02:00
raucao abfd654ae5 Clone the private Mastodon repo with an SSH deploy key
The repository is private, so use git@gitea.kosmos.org with a read-only deploy key stored in credentials/mastodon (repo_deploy_key). The pinned gitea host key is an attribute.
2026-10-07 19:41:43 +02:00
raucao fb0c7b2b1c Add a build phase, make deployment revision-driven
Split the deployment into kosmos-mastodon::build (checkout + bundle/yarn/assets, no database) and kosmos-mastodon::deploy (migrations + services), dispatched by the new 'build' attribute. Both phases are idempotent per checked-out revision via stamps, and the migration/restart/search-index chain is now triggered by the deployed revision instead of the git resource, so it still runs when the build was pre-staged.
2026-10-07 18:08:22 +02:00
raucao 9dfdf6bc9b Remove the backup gem from Mastodon
The shared backup cookbook hardcodes postgresql-client-12, which does not exist on Ubuntu 24.04. Drop the Mastodon backup recipe and its role inclusion; the PostgreSQL standby is the safety net. The backup cookbook itself is still used by other services.
2026-10-07 17:53:57 +02:00
raucao ec2645c5da Install LibreTranslate in a virtualenv
Ubuntu 24.04's system Python is externally managed (PEP 668) and refuses pip installs. Also bump LibreTranslate from 1.3.8 to 1.9.6, since the former pulls ctranslate2 2.24.0 which has no Python 3.12 wheels.
2026-10-07 17:44:16 +02:00
raucao b09808b12e Drop the java cookbook dependency
The java cookbook's openjdk recipe unconditionally adds the dead openjdk-r PPA on Ubuntu and cannot be told not to, which breaks on Ubuntu 24.04. Elasticsearch 7.x ships a bundled JDK and no JAVA_HOME is configured, so no system Java is needed.
2026-10-07 17:26:40 +02:00
raucao 8a11cd88f7 Create search indices during deploy, import in background
Mastodon 4.4+ can create/upgrade the Elasticsearch indices and mappings without importing data. Do that synchronously during the deployment so search does not fail on a missing index, then populate the (potentially very long) import via a systemd unit started with --no-block so the maintenance window is not extended.
2026-10-07 17:17:27 +02:00
raucao 591d6dc4ec Split Mastodon runtime deps from deployment, use Redis cluster
Add a kosmos-mastodon::dependencies recipe with everything needed to run Mastodon (Node, Ruby, libvips, Elasticsearch, packages) but without the app deployment. The default recipe includes it and only runs the deployment when node['kosmos-mastodon']['deploy'] is true, so a VM can be prepared ahead of a maintenance window.

Stop using the local redisio instance and connect to the external Redis cluster (redis_server role, db 2, password from the credentials data bag) instead. Remove the redisio service dependencies from the systemd units and drop the redisio cookbook dependency.
2026-10-07 16:41:28 +02:00
raucao b60ca687ec Upgrade Mastodon to 4.7
Bump the production branch to 4.7 and adjust for the changes between 4.3 and 4.7:

- Node 24.21.0 and Ruby 4.0.7 (via ruby-build v20260924)
- Redis 7.4.11 (Mastodon 4.5 requires >= 7.0)
- Replace ImageMagick with libvips (required since 4.6) and libidn11 with libidn
- Split database migrations into pre-/post-deployment phases and rebuild
  the Elasticsearch accounts index mappings (required since 4.4)
- Remove the OTP_SECRET environment variable (removed in 4.4)
- Disable email subscriptions (new optional feature in 4.6) and force the
  default locale (DEFAULT_LOCALE no longer overrides it since 4.4)
- Add the new fasp Sidekiq queue
- Enable corepack for yarn instead of the removed no-arg 'corepack prepare'
2026-10-07 16:12:48 +02:00
raucao 3d733e6980 Update Gitea to 28.1.0 2026-10-06 23:08:19 +02:00
raucao 9c7f5cee21 Add Redis password to akkounts, liquor cabinet 2026-10-06 17:22:09 +02:00
raucao c64f3c064b ejabberd config changes for upgrade 2026-10-05 16:05:32 +02:00
raucao 2de2a3ef18 Fix/refactor test suite for our ejabberd cookbook 2026-10-04 14:54:06 +02:00
raucao d632389cb2 Fix Erlang cookie needing a restart instead of reload 2026-10-04 14:53:44 +02:00
raucao 6c2cf9af41 Upgrade ejabberd to 26.09 2026-10-04 14:53:10 +02:00
raucao 2488631eb6 Upgrade Gitea Runner to 4.0.0 2026-10-04 12:44:17 +02:00
raucao af35f70a5e Upgrade Gitea to 28.0.0
closes #675
2026-10-04 12:33:54 +02:00
greg 78d5d262d5 Merge branch 'master' into feature/sockethub_5.0 2026-09-23 11:47:32 +02:00
raucao c44bb365ce Automatically apply changed Redis configs 2026-09-22 16:53:12 +02:00
raucao 911080ae81 Update/refactor Sockethub cookbook for 5.0
See CHANGELOG.md for the important changes
2026-09-22 16:45:16 +02:00
raucao edd7cc44de Make Redis password optional 2026-09-22 15:33:52 +02:00
raucao d4ff2a42db Merge pull request 'Update Redis cookbook, Redis major version' (#672) from feature/redis_8 into master
Reviewed-on: #672
Reviewed-by: Râu Cao <raucao@kosmos.org>
2026-09-21 18:26:36 +00:00
greg 0310f08d14 Switch to redisio cookbook version 8.0.0
It switched to modern resources, see https://github.com/sous-chefs/redisio
2026-09-21 19:26:50 +02:00
raucao aa8e550406 Allow browser/CORS access to Gitea repos 2026-09-20 10:32:51 +02:00
raucao eff0edf247 Upgrade BTCPay 2026-08-24 15:12:05 -06:00
raucao eae40fd55b Add custom spam rules
Targeting known campaigns
2026-08-17 14:58:42 -06:00
raucao 413f02d9c1 Fix commercial validity lists poisoning Bayes db, harden Bayes learning 2026-08-17 14:57:10 -06:00
raucao 2bd6da0064 Auto-update spamassassin rules 2026-08-17 14:56:29 -06:00
raucao 0224a99fdb Add upstream_cache_status to Nginx JSON log format 2026-08-16 12:17:34 -06:00
raucao f6f0d5b22d Cache successful Blossom responses
Cache returned files from Blossom on the Nginx hosts, until either
deleted by the user or hitting the global cache size limit (1 GB)
2026-08-16 12:17:09 -06:00
raucao 451903f663 Enable Sieve and ManageSieve for Dovecot
Enables both sieve and managesieved, and adds a global rule that moves
detected spam to a user's Junk folder automatically
2026-08-15 17:29:41 -06:00
raucao 7345eaceb1 Update VM base image 2026-08-15 15:44:05 -06:00
raucao 098dcd4e32 Auto-configure swap
Create a swapfile and configure it to be used for swap, immediately and
on boot; defaults to half the size of RAM. See attribute for overriding
configs to tune size or swappiness.
2026-08-14 12:10:37 -06:00
raucao 7e55a1f1d1 Tweak timeoutsec for akkounts service 2026-08-10 17:22:21 -06:00
raucao d0804bd7dc akkounts: Set up Bun properly, upgrade Ruby 2026-08-09 19:04:19 -06:00
raucao 71a27eb3ca Add caching for Gitea Actions, improve performance 2026-08-08 10:11:28 -06:00
raucao 956a58a310 Upgrade Node.js to LTS 2026-08-07 20:12:01 -06:00
raucao f453a3004d Fix implicit conversion of integer to string 2026-08-07 20:11:32 -06:00