c778f4d225
This change allows the number of sidekiq processes and which job classes they handle to be configured. An instance admin may choose to have separate sidekiq processes handling jobs related to local users (`default` job class) and jobs related to federation (`push`, `pull`, `ingress`), so that as the instance grows and takes on more federation traffic, the local users' experience is not as impacted. For more details, see https://docs.joinmastodon.org/admin/scaling/#sidekiq This pr also includes the following changes suggested in review: - adds syslog identifiers for mastodon services - moves working directory config to common cfgService - adds mastodon.target
54 lines
2.1 KiB
Nix
54 lines
2.1 KiB
Nix
{ pkgs
|
|
, extraInit ? ""
|
|
, extraShutdown ? ""
|
|
}:
|
|
|
|
''
|
|
start_all()
|
|
|
|
${extraInit}
|
|
|
|
server.wait_for_unit("redis-mastodon.service")
|
|
server.wait_for_unit("mastodon-sidekiq-all.service")
|
|
server.wait_for_unit("mastodon-streaming.service")
|
|
server.wait_for_unit("mastodon-web.service")
|
|
server.wait_for_open_port(55000)
|
|
server.wait_for_open_port(55001)
|
|
|
|
# Check that mastodon-media-auto-remove is scheduled
|
|
server.succeed("systemctl status mastodon-media-auto-remove.timer")
|
|
|
|
# Check Mastodon version from remote client
|
|
client.succeed("curl --fail https://mastodon.local/api/v1/instance | jq -r '.version' | grep '${pkgs.mastodon.version}'")
|
|
|
|
# Check access from remote client
|
|
client.succeed("curl --fail https://mastodon.local/about | grep 'Mastodon hosted on mastodon.local'")
|
|
client.succeed("curl --fail $(curl https://mastodon.local/api/v1/instance 2> /dev/null | jq -r .thumbnail) --output /dev/null")
|
|
|
|
# Simple check tootctl commands
|
|
# Check Mastodon version
|
|
server.succeed("mastodon-tootctl version | grep '${pkgs.mastodon.version}'")
|
|
|
|
# Manage accounts
|
|
server.succeed("mastodon-tootctl email_domain_blocks add example.com")
|
|
server.succeed("mastodon-tootctl email_domain_blocks list | grep example.com")
|
|
server.fail("mastodon-tootctl email_domain_blocks list | grep mastodon.local")
|
|
server.fail("mastodon-tootctl accounts create alice --email=alice@example.com")
|
|
server.succeed("mastodon-tootctl email_domain_blocks remove example.com")
|
|
server.succeed("mastodon-tootctl accounts create bob --email=bob@example.com")
|
|
server.succeed("mastodon-tootctl accounts approve bob")
|
|
server.succeed("mastodon-tootctl accounts delete bob")
|
|
|
|
# Manage IP access
|
|
server.succeed("mastodon-tootctl ip_blocks add 192.168.0.0/16 --severity=no_access")
|
|
server.succeed("mastodon-tootctl ip_blocks export | grep 192.168.0.0/16")
|
|
server.fail("mastodon-tootctl ip_blocks export | grep 172.16.0.0/16")
|
|
client.fail("curl --fail https://mastodon.local/about")
|
|
server.succeed("mastodon-tootctl ip_blocks remove 192.168.0.0/16")
|
|
client.succeed("curl --fail https://mastodon.local/about")
|
|
|
|
server.shutdown()
|
|
client.shutdown()
|
|
|
|
${extraShutdown}
|
|
''
|