Setting up SS14.Changelog
Main setup
See the repo: https://github.com/space-wizards/SS14.Changelog
RSS feed
The publishing system can automatically publish the changelog to an RSS feed. This is done from actions_changelog_rss.py
which is ran from the publishing workflow.
Server setup
The resulting RSS file must be hosted on a separate server, accessible via SFTP. I recommend setting up an SFTP-only chrooted user. If you know how to do this you probably don’t need to look very hard at this.
# Create a group for SFTP-only users
groupadd sftp-only
# Create changelog user
useradd changelog-rss --groups sftp-only --create-home
# Create directory for chrooted sftp
mkdir --parents /var/sftp/home/changelog-rss
chown changelog-rss: /var/sftp/home/changelog-rss
# Set up SSH key for user
mkdir /home/changelog-rss/.ssh
ssh-keygen -t ed25519 -f changelog_key -N ""
cat changelog_key.pub >> /home/changelog-rss/.ssh/authorized_keys
# Save changelog_key, you'll need it for GitHub-side setup.
chown -R changelog-rss: /home/changelog-rss/.ssh
# (example, depends on what web server you want to use)
# Give nginx access to the upload directory
setfacl -m u:nginx:rx /var/sftp/home/changelog-rss
You will also need to add the following to /etc/ssh/sshd_config
:
Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/sftp
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
ForceCommand internal-sftp
You’ll still need to make sure the changelog file is exposed through a web server somwhere. I’ll leave that up to you. Whatever you do, make sure that your web server reports the file’s Content-Type
as application/rss+xml
.
GitHub setup
In the official publishing workflow, actions_changelog_rss.py
automatically starts running once the CHANGELOG_RSS_KEY
secret is set on GitHub. This should be the private key that will allow you to connect over SFTP.
Before you set that however, there are still some changes you should make to actions_changelog_rss.py
:
# Change these to suit your server settings
# https://docs.fabfile.org/en/stable/getting-started.html#run-commands-via-connections-and-run
SSH_HOST = "centcomm.spacestation14.io"
SSH_USER = "changelog-rss"
SSH_PORT = 22
RSS_FILE = "changelog.xml"
HOST_KEYS = [
"AAAAC3NzaC1lZDI1NTE5AAAAIEE8EhnPjb3nIaAPTXAJHbjrwdGGxHoM0f1imCK0SygD"
]
# RSS feed parameters, change these
FEED_TITLE = "Space Station 14 Changelog"
FEED_LINK = "https://github.com/Goob-Station/Goob-Station/"
FEED_DESCRIPTION = "Changelog for the official Wizard's Den branch of Space Station 14."
FEED_LANGUAGE = "en-US"
FEED_GUID_PREFIX = "ss14-changelog-wizards-"
FEED_URL = "https://central.spacestation14.io/changelog.xml"
- You should set the
SSH_
parameters to whatever connection parameters you need to connect via SSH. RSS_FILE
is the name of the destination file in the SFTP directory.HOST_KEYS
must contain the ed25519 host key of your destination system. You can find it at/etc/ssh/ssh_host_ed25519_key.pub
. Cut off the startingssh-ed25519
bit.FEED_
parameters all change the contents of the RSS feed. You should probably change these to make them distinct from the ones used by Wizard’s Den.
Custom XML data
The RSS feed created contains both a normal HTML-based description of the changes, as well as some more structured information from the source changelog, that can be displayed by specialized tools. This data is all under the https://spacestation14.com/changelog_rss
XML namespace.
A quick summary of the data:
- An
<item>
contains ass14:from-id
andss14:to-id
to describe the range of changelogs covered by an RSS item. - Each RSS item can contain a series of
<ss14:entry>
elements containing the entries making up the RSS item.