Federated forge server

[[ πŸ—ƒ ^rjQ3E vervis ]] :: [πŸ“₯ Inbox] [πŸ“€ Outbox] [🐀 Followers] [🀝 Collaborators] [πŸ›  Commits]

Clone

HTTPS: git clone https://vervis.peers.community/repos/rjQ3E

SSH: git clone USERNAME@vervis.peers.community:rjQ3E

Branches

Tags

main ::

Files

πŸ—Ž .ghci
πŸ—Ž .gitignore
πŸ—Ž API.md
πŸ—Ž AUTHORS.md
πŸ—Ž CHANGELOG.md
πŸ—Ž COPYING
πŸ—Ž COPYING.AGPL3
πŸ—Ž COPYING.CC0
πŸ—Ž Dockerfile
πŸ—Ž FEDERATION.md
πŸ—Ž INSTALL.md
πŸ—Ž README.md
πŸ—€ app
πŸ—€ config
πŸ—Ž create-db.sql
πŸ—Ž create-self-cert.sh
πŸ—Ž docker-compose.yml
πŸ—€ embed
πŸ—€ hook-darcs
πŸ—€ hook-git
πŸ—€ migrations
πŸ—Ž nginx.conf
πŸ—Ž prepare-state.sh
πŸ—€ src
πŸ—Ž stack.yaml
πŸ—€ templates
πŸ—€ test
πŸ—€ th
πŸ—Ž update-deps.sh
πŸ—Ž vervis.cabal

README.md

Vervis is a free, open-source federated forge backend server:

Features

The current focus is the classic core features for collaboration:

SSH Client Config

Vervis comes with its own SSH server, which usually requires some configuration to be set in your SSH client, if you’d like to be able to push and pull repos via SSH.

Add the following to your ~/.ssh/config file (or create it if it doesn’t exist), replacing the Host with your instance’s domain:

Host fig.fr33domlover.site
    KexAlgorithms +diffie-hellman-group1-sha1
    ControlMaster no
    ForwardAgent no
    ForwardX11 no
    Ciphers +aes256-cbc
    MACs +hmac-sha1
    PubkeyAcceptedKeyTypes +ssh-rsa
    HostKeyAlgorithms +ssh-rsa

Cloning repositories works over (unauthenticated) HTTPS and (authenticated) SSH.

HTTPS clone:

$ git clone https://vervis.peers.community/repos/rjQ3E vervis

SSH clone and push:

If your system username and Vervis username are identical:

$ git clone vervis.peers.community:rjQ3E vervis

If usernames are different:

$ git clone luke@vervis.peers.community:rjQ3E vervis

Deployment

Tech stack

Requirements

Docker

The repository includes deployment configurations for Docker and docker-compose.

  1. Install Docker
  2. In create-db.sql, update the vervis DB user’s password
  3. Create and edit config/settings.yml based on config/settings-sample-prod.yml, remember to set the same DB password here
  4. In docker-compose.yml, update the database superuser password (it’s the password for the postgres superuser, not vervis)
  5. Create initial state: ./prepare-state.sh
  6. Ready for launch! docker-compose up -d
sudo apt install docker-compose docker.io
vim create-db.sql
cp config/settings-sample-prod.yml config/settings.yml
vim config/settings.yml
vim docker-compose.yml
./prepare-state.sh
docker-compose up -d

Manual Installation

For manual/custom installation steps, see INSTALL.md.

Development

To prepare a development environment, follow the instructions in INSTALL.md.

Federation & API

See FEDERATION.md & API.md.

Contributing

Vervis is free, open-source software licensed under AGPLv3.

You can open issues for bugs you’ve found or features you think are missing. You can also submit pull requests to this repository.

Matrix room: #general-forgefed:matrix.batsense.net

Finding your way in the codebase

Folders:

Files:

Haskell modules in src:

Testing the production image

When Vervis is built in development mode (the flag is set in stack.yml and can be overriden when running stack build), it works with plain HTTP, but in production mode (e.g.Β when using the official prebuilt image), it requires HTTPS, a domain, and the standard HTTP(S) ports.

Instructions for testing a production image, assuming we’ll use dev.example as the server’s domain name:

  1. The usual ./prepare-state.sh and cp config/settings-sample-prod.yml config/settings.yml
  2. On the host system, edit /etc/hosts, adding the line 127.0.0.1 dev.example
  3. In config/settings.yml, set the domain to dev.example
  4. Run ./create-self-cert.sh to generate a self-signed certificate for dev.example
  5. In docker-compose.yml, uncomment the nginx service
  6. In nginx.conf,
    • Update the domain to dev.example
    • Uncomment the self-signed cert paths
  7. docker-compose up

License

AGPLv3+. See COPYING.

Funding

This project is funded through the NGI Zero Entrust Fund, a fund established by NLnet with financial support from the European Commission’s Next Generation Internet program. Learn more at the NLnet project page.

NLnet foundation logo NGI Zero Entrust Logo

[See repo JSON]