You need to run your own Matrix homeserver.
Create an appservice registration file
cactus.yaml that Synapse can read. Use the following template and change the tokens:
# A unique, user-defined ID of the application service which will never change. id: "Cactus Comments" # Where the cactus-appservice is hosted: url: "http://cactus:5000" # Unique tokens used to authenticate requests between our service and the # homeserver (and the other way). Use the sha256 hashes of something random. # CHANGE THESE VALUES. as_token: "a2d7789eedb3c5076af0864f4af7bef77b1f250ac4e454c373c806876e939cca" hs_token: "b3b05236568ab46f0d98a978936c514eac93d8f90e6d5cd3895b3db5bb8d788b" # User associated with our service. In this case "@cactusbot:example.com" sender_localpart: "cactusbot" namespaces: aliases: - exclusive: true regex: "#comments_.*"
Then add the file path to your Synapse
app_service_config_files: - "/path/to/cactus.yaml"
To allow guest comments without users needing to log in, you need to have guest registration enabled. To do this set
allow_guest_access: true in
Cactus Comments application service
The Cactus Comments application service is entirely configured with environment variables.
|CACTUS_HS_TOKEN||Yes||The token used to authenticate the homeserver. This should match
|CACTUS_AS_TOKEN||Yes||The token used to authenticate the application service to the homeserver. This should match
|CACTUS_HOMESERVER_URL||Yes||The complete URL of the homeserver that the application service is registered with.|
|CACTUS_USER_ID||Yes||The user id for the chatbot interface. This should be based on
|CACTUS_NAMESPACE_REGEX||No||The regex for room aliases that the application service controls. This should match the regex in the registration YAML file. Example:
|CACTUS_NAMESPACE_PREFIX||No||The prefix of room aliases that the application service controls. This should only be set if
|CACTUS_REGISTRATION_REGEX||No||Only allow user id’s matching this regex to register new sites. Example:
CACTUS_NAMESPACE_PREFIX exists in case you want to change the room alias regex that the application service controls. This is useful if you want to run multiple Cactus Comments deployments on the same homeserver.
There are four required environment variables and they should match those defined in the
CACTUS_HS_TOKEN=b3b05236568ab46f0d98a978936c514eac93d8f90e6d5cd3895b3db5bb8d788b CACTUS_AS_TOKEN=a2d7789eedb3c5076af0864f4af7bef77b1f250ac4e454c373c806876e939cca CACTUS_HOMESERVER_URL=http://synapse:8008 CACTUS_USER_ID=@cactusbot:example.com
cactus-appservice is primarily distributed as a docker image.
However, you can opt to run it as a systemd service by cloning the repo, at the expense of some additional setup steps.
The application service is stateless either way.
If the environment variables above were defined in
cactus.env, you could start the application service directly with docker like:
$ docker run --env-file cactus.env --name cactus cactuscomments/cactus-appservice:latest
docker-compose, this service might look like:
services: cactus: image: cactuscomments/cactus-appservice:latest env_file: "cactus.env"
See the dedicated instructions for systemd here.