README: Revise text
This commit is contained in:
parent
d35b26c1c2
commit
4b113b8a20
2 changed files with 117 additions and 139 deletions
38
INSTALL.md
38
INSTALL.md
|
@ -1,37 +1,5 @@
|
||||||
# 2024 update - docker setup
|
These are the instructions for manual installation of Vervis. If you're looking
|
||||||
|
for instructions for Docker based deployment, see [README.md](README.md).
|
||||||
I'll update this file properly soon, but for now, instructions for deployment
|
|
||||||
using docker:
|
|
||||||
|
|
||||||
1. In `create-db.sql`, update the `vervis` DB user's password
|
|
||||||
2. Create and edit `config/settings.yml` based on
|
|
||||||
`config/settings-sample-prod.yml`, remember to set the same DB password here
|
|
||||||
3. In `docker-compose.yml`, update the database superuser password (it's the
|
|
||||||
password for the `postgres` superuser, not `vervis`)
|
|
||||||
4. Create initial state: `./prepare-state.sh`
|
|
||||||
5. Ready for launch! `docker-compose up -d`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Vervis is still in early development and the build process gets updates once in
|
|
||||||
a while, but this file tries to keep up and list the latest instructions for
|
|
||||||
running a Vervis instance.
|
|
||||||
|
|
||||||
At the time of writing, you can get a running Vervis instance if you follow the
|
|
||||||
steps below.
|
|
||||||
|
|
||||||
UPDATE: There is a binary build you can use instead of building from source. It
|
|
||||||
can be found [here](https://box.angeley.es/nextcloud/s/oWHmQDtWTAfPR4Z). If you
|
|
||||||
use it, verify the download using `sha256sum` and `gpg`, make sure the settings
|
|
||||||
in your `config/settings.yml` (see below) match the downloaded file paths, and run the
|
|
||||||
web app using `./bin/vervis` and not `stack run`. This may be confusing;
|
|
||||||
hopefully I'll make a nicer binary release soon :)
|
|
||||||
|
|
||||||
2022 UPDATE: The binary release is unavailable right now. But a docker image is
|
|
||||||
being prepared. More news soon.
|
|
||||||
|
|
||||||
2024 UPDATE: For production hosting and deployment with Docker, use the
|
|
||||||
`Dockerfile` and `docker-compose.yml` files in this repo's root directory.
|
|
||||||
|
|
||||||
# (1) System libraries
|
# (1) System libraries
|
||||||
|
|
||||||
|
@ -191,7 +159,7 @@ missing in the filesystem. You can ask Vervis to generate missing files, and
|
||||||
load the rest as usual:
|
load the rest as usual:
|
||||||
|
|
||||||
$ touch _keyfile_write_missing
|
$ touch _keyfile_write_missing
|
||||||
$ stack run
|
$ stack run -- config/settings.yml
|
||||||
|
|
||||||
Browse to `http://localhost:3000` and have fun!
|
Browse to `http://localhost:3000` and have fun!
|
||||||
|
|
||||||
|
|
204
README.md
204
README.md
|
@ -1,58 +1,48 @@
|
||||||
# Vervis
|
Vervis is a **free, open-source federated forge backend server**:
|
||||||
|
|
||||||
**Vervis** is a project hosting and management application, with a focus on
|
- A platform for hosting and collaboration on software projects
|
||||||
software projects and decentralization. There is still a lot to do, but if you'd
|
- A reference implementation of the [ForgeFed][] forge federation protocol,
|
||||||
like to try it, a few things more or less work. See below for details.
|
which is an extension of ActivityPub, the protocol that drives the Fediverse
|
||||||
|
- A decentralized network in which people on one server can seamlessly
|
||||||
|
collaborate with people from another server, including non-Vervis software
|
||||||
|
that implements ForgeFed
|
||||||
|
- Vervis is still in **pre-alpha phase** and not ready for production use!
|
||||||
|
- Provides a temporary static UI, to be replaced by the [Anvil][] frontend
|
||||||
|
client
|
||||||
|
|
||||||
Vervis is free software, and is committed to software freedom. Most of its code
|
## Navigation
|
||||||
is in the public domain using the CC0 Public Domain Dedication. The application
|
|
||||||
as a whole however is released under AGPL version 3. For the legal details, see
|
|
||||||
the file `COPYING`. Please use and reuse Vervis for a Good purpose, and share
|
|
||||||
your work too in the same spirit.
|
|
||||||
|
|
||||||
## Try It
|
- [Project on Codeberg][Repo]
|
||||||
|
- Support the development via [Liberapay][] or [OpenCollective][]
|
||||||
|
- [Official Docker image][Image]
|
||||||
|
- Demo instances:
|
||||||
|
- [Fig][]
|
||||||
|
- [Grape][]
|
||||||
|
- [Walnut][]
|
||||||
|
|
||||||
You can either use the existing instance mentioned below, or install your own
|
## Features
|
||||||
instance (see `INSTALL.md`).
|
|
||||||
|
|
||||||
My focus has been on writing the backend side of features and exploring various
|
The current focus is the classic core features for collaboration:
|
||||||
experimental features. As a result, the user interface and visual design and
|
|
||||||
page styles (i.e. the whole UX and UI) are in a bad shape right now, so I want
|
|
||||||
to write a few little guidelines to help you find your way until this situation
|
|
||||||
improves.
|
|
||||||
|
|
||||||
There is a Vervis instance running at <https://vervis.peers.community>, and I
|
- Repositories
|
||||||
store my code on it. Feel free to use it and try it, however do please treat it
|
- Git
|
||||||
as a demo, as it's not a reliable stable instance for general use yet. If for
|
- Darcs
|
||||||
any reason you do with to keep some code and tickets etc. on it for actual use,
|
- Issue tracking
|
||||||
please contact me to let me know.
|
- Pull requests
|
||||||
|
- And of course federation! Including, eventually, with other forge projects
|
||||||
|
working on implementing federation, such as [Forgejo][] and [GitLab][]
|
||||||
|
|
||||||
Here are the steps to make the most out of it at this point (at least at the
|
## SSH Client Config
|
||||||
time of writing, I'll try to keep this little tutorial up to date)!
|
|
||||||
|
|
||||||
1. Create an SSH key if you don't have one. Most likely you do, for pushing to
|
Vervis comes with its own SSH server, which usually requires some configuration
|
||||||
your existing repos hosted on your favorite project hosting platform.
|
to be set in your SSH client, if you'd like to be able to push and pull repos
|
||||||
2. Browse to the instance I linked above, and click *Sign up*. Choose a
|
via SSH.
|
||||||
username and a password. Email address is currently optional on this
|
|
||||||
instance, but it's going to be required soon and used for things like
|
|
||||||
password reset, so please do provide a real email address.
|
|
||||||
3. Log in. Once you log in, the front page will change, and among other things,
|
|
||||||
it will link to your SSH keys. Go there to add your SSH key. In the
|
|
||||||
algorithm box you paste the first part e.g. `ssh-rsa`, and in the second box
|
|
||||||
you paste the long scary part that follows it.
|
|
||||||
4. The front page also links you to repos and projects, you can create a
|
|
||||||
project and open tickets. You can also create a Git or Darcs repo, and
|
|
||||||
optionally associate it with a project. A project can have any number of
|
|
||||||
repos asociated with it, sharing the same ticket tracker. Creating a project
|
|
||||||
or repo may ask you to create a project or repo role; the front page has
|
|
||||||
links for creating these
|
|
||||||
5. You can browse all the projects and repos hosted on the instance.
|
|
||||||
6. Add the following to your `~/.ssh/config` file, or create it if doesn't
|
|
||||||
exist. To be honest I'm not sure it's still required, and haven't tested
|
|
||||||
yet. If you find that this step is unnecessary and everything works without
|
|
||||||
it, let me know :)
|
|
||||||
|
|
||||||
Host vervis.peers.community
|
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
|
KexAlgorithms +diffie-hellman-group1-sha1
|
||||||
ControlMaster no
|
ControlMaster no
|
||||||
ForwardAgent no
|
ForwardAgent no
|
||||||
|
@ -61,13 +51,7 @@ time of writing, I'll try to keep this little tutorial up to date)!
|
||||||
MACs +hmac-sha1
|
MACs +hmac-sha1
|
||||||
PubkeyAcceptedKeyTypes +ssh-rsa
|
PubkeyAcceptedKeyTypes +ssh-rsa
|
||||||
HostKeyAlgorithms +ssh-rsa
|
HostKeyAlgorithms +ssh-rsa
|
||||||
|
```
|
||||||
Once you create a repository, it is possible that initially, trying to look at
|
|
||||||
it will give you 404. It should be okay though once you push some commit into
|
|
||||||
it.
|
|
||||||
|
|
||||||
The examples below use Git, but it's exactly the same for Darcs. They are
|
|
||||||
equally supported.
|
|
||||||
|
|
||||||
Cloning repositories works over (unauthenticated) HTTPS and (authenticated)
|
Cloning repositories works over (unauthenticated) HTTPS and (authenticated)
|
||||||
SSH.
|
SSH.
|
||||||
|
@ -86,48 +70,70 @@ If usernames are different:
|
||||||
|
|
||||||
$ git clone luke@vervis.peers.community:rjQ3E vervis
|
$ git clone luke@vervis.peers.community:rjQ3E vervis
|
||||||
|
|
||||||
A few more little notes:
|
## Deployment
|
||||||
|
|
||||||
- No password reset, it's already implemented but not deployed yet at the time
|
### Tech stack
|
||||||
of writing these words
|
|
||||||
- A few more features are available, such as ticket workflows and ticket claim
|
- **Haskell** programming language
|
||||||
requests, but they are less important so I'm not going into them at this
|
- **Yesod** web framework
|
||||||
point
|
- **PostgreSQL** database for most data
|
||||||
- Deletion of users, projects and repos may not work
|
- Some data in **SQLite** databases
|
||||||
- Login session should last for 2 hours after last access
|
- The work-in-progress [Anvil][] frontend uses:
|
||||||
- The instance I'm running serves only HTTPS, no plain HTTP
|
- **Svelte**
|
||||||
- There's no HTTPS push
|
- **Skeleton**
|
||||||
- Merge requests not implemented yet
|
- **Tauri**
|
||||||
- I started working on federation using ActivityPub, I'll update here when it's
|
|
||||||
ready for trying against ActivityPub clients and servers
|
### Requirements
|
||||||
- Feedback is very very very very very welcome and needed!!! :)
|
|
||||||
|
- **PostgreSQL** 9.5+
|
||||||
|
|
||||||
|
### 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`
|
||||||
|
|
||||||
|
```shell
|
||||||
|
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](INSTALL.md).
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
To prepare a development environment, follow the instructions in
|
||||||
|
[INSTALL.md](INSTALL.md).
|
||||||
|
|
||||||
## Federation & API
|
## Federation & API
|
||||||
|
|
||||||
See `FEDERATION.md` & `API.md`.
|
See `FEDERATION.md` & `API.md`.
|
||||||
|
|
||||||
## Installation
|
## Contributing
|
||||||
|
|
||||||
See `INSTALL.md`.
|
Mastodon is **free, open-source software** licensed under **AGPLv3**.
|
||||||
|
|
||||||
## Using
|
You can open issues for bugs you've found or features you think are missing.
|
||||||
|
You can also submit pull requests to this repository.
|
||||||
|
|
||||||
See the .cabal file for more info and link to project website and version
|
**Matrix room**: [#general-forgefed:matrix.batsense.net][Matrix]
|
||||||
control.
|
|
||||||
|
|
||||||
The official download location is the Darcs repository:
|
### Finding your way in the codebase
|
||||||
|
|
||||||
<https://vervis.peers.community/repos/rjQ3E>
|
|
||||||
|
|
||||||
There is a backup repo, not always up to date though, at:
|
|
||||||
|
|
||||||
<https://codeberg.org/forgefed/vervis>
|
|
||||||
|
|
||||||
See the file `INSTALL.md` for a detailed usage and deployment guide. The file
|
|
||||||
`ChangeLog` explains how to see the history log of the changes done in the
|
|
||||||
code. `NEWS.md` provides a friendly overview of the changes for each release.
|
|
||||||
|
|
||||||
## Finding your way in the codebase
|
|
||||||
|
|
||||||
Folders:
|
Folders:
|
||||||
|
|
||||||
|
@ -190,19 +196,9 @@ Haskell modules in `src`:
|
||||||
- `Vervis.Client`
|
- `Vervis.Client`
|
||||||
- `Vervis.Ssh`
|
- `Vervis.Ssh`
|
||||||
|
|
||||||
## Reporting Bugs and Suggesting Features
|
## License
|
||||||
|
|
||||||
If you found a bug, or you have an idea, a feature request or a wishlist item,
|
AGPLv3+. See `COPYING`.
|
||||||
open a ticket for it! Even if you're going to implement something or try to
|
|
||||||
solve it.
|
|
||||||
|
|
||||||
If you're going to implement some feature or fix some bug you found, **start by
|
|
||||||
opening a ticket**
|
|
||||||
[here](https://codeberg.org/ForgeFed/Vervis/issues) so that other
|
|
||||||
people will know which features are being developed and who does what.
|
|
||||||
|
|
||||||
UPDATE: The ticket tracker is temporarily unavailable. You can instead contact
|
|
||||||
[Pere](https://perelev.site) to report issues and to coordinate work.
|
|
||||||
|
|
||||||
## Funding
|
## Funding
|
||||||
|
|
||||||
|
@ -214,3 +210,17 @@ This project is funded through the
|
||||||
|
|
||||||
[<img src="https://nlnet.nl/logo/banner.png" alt="NLnet foundation logo" width="20%" />](https://nlnet.nl)
|
[<img src="https://nlnet.nl/logo/banner.png" alt="NLnet foundation logo" width="20%" />](https://nlnet.nl)
|
||||||
[<img src="https://nlnet.nl/image/logos/NGI0Entrust_tag.svg" alt="NGI Zero Entrust Logo" width="20%" />](https://nlnet.nl/entrust)
|
[<img src="https://nlnet.nl/image/logos/NGI0Entrust_tag.svg" alt="NGI Zero Entrust Logo" width="20%" />](https://nlnet.nl/entrust)
|
||||||
|
|
||||||
|
[Anvil]: https://codeberg.org/Anvil/Anvil
|
||||||
|
[Docker]: https://docs.docker.com
|
||||||
|
[ForgeFed]: https://forgefed.org
|
||||||
|
[Forgejo]: https://forgejo.org
|
||||||
|
[GitLab]: https://gitlab.com
|
||||||
|
[Image]: https://codeberg.org/ForgeFed/Vervis/packages
|
||||||
|
[Liberapay]: https://liberapay.com/ForgeFed
|
||||||
|
[Matrix]: https://matrix.to/#/#general-forgefed:matrix.batsense.net
|
||||||
|
[OpenCollective]: https://opencollective.com/forgefed
|
||||||
|
[Repo]: https://codeberg.org/ForgeFed/Vervis)
|
||||||
|
[fig]: https://fig.fr33domlover.site
|
||||||
|
[grape]: https://grape.fr33domlover.site
|
||||||
|
[walnut]: https://walnut.fr33domlover.site
|
||||||
|
|
Loading…
Reference in a new issue