You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.7 KiB
Markdown
96 lines
3.7 KiB
Markdown
A custom self-hosted instance of [CryptPad](https://cryptpad.fr/) for qcode
|
|
infra, accessible at https://cryptpad.qcode.ch.
|
|
|
|
The upstream code lives in the [cryptpad](cryptpad/) sub directory. This
|
|
is placed as a git subtree, not to be confused with submodule. To customize
|
|
functionality or look&feel, copy a file from
|
|
[cryptpad/customize.dist](cryptpad/customize.dist/) into
|
|
[customize](customize/) and change it. The file will be served in place of
|
|
the original dist.
|
|
|
|
See [upstream docs](https://docs.cryptpad.fr/en/admin_guide/customization.html)
|
|
for customization details.
|
|
|
|
## Updating from upstream
|
|
|
|
To update local copy with upstream changes, use
|
|
[tools/pull-cryptpad-upstream.sh](tools/pull-cryptpad-upstream.sh) script.
|
|
For example, to pull up to an imaginary release tag xyz, execute:
|
|
|
|
./tools/pull-cryptpad-upstream.sh xyz
|
|
|
|
It'll fetch from upstream and add new commits as if they were part of this repo.
|
|
Finally, `git push` to update this repo's remote.
|
|
|
|
If instead you want to make a pull request, first create a branch. Something like
|
|
`git checkout -b upstream-update-xyz master` should do. Then execute the above
|
|
script and send the branch as a pull request.
|
|
|
|
Then, check whether there were any changes to config files between the last deployed
|
|
release and the newly pulled version. Most important files to check are the following.
|
|
|
|
# config.js
|
|
git diff v4.14.1..v5.0.0 -- cryptpad/config/config.example.js
|
|
# nginx.conf
|
|
git diff v4.14.1..v5.0.0 -- cryptpad/docs/example.nginx.conf
|
|
# customize/application_config.js
|
|
git diff v4.14.1..v5.0.0 -- cryptpad/www/common/application_config_internal.js
|
|
|
|
Obviously, replace v4.14.1 and v5.0.0 with the appropriate tags.
|
|
|
|
For the record, initial subtree merge from upstream was done with the following
|
|
command:
|
|
|
|
git subtree add -P cryptpad https://github.com/xwiki-labs/cryptpad.git 4.14.0
|
|
|
|
## Contributing to upstream
|
|
|
|
You'll probably want to have a separate repository, cloned directly from the
|
|
upstream `https://github.com/xwiki-labs/cryptpad.git`. Since this repo's
|
|
cryptpad dir is a copy of the upstream repo, it should be very easy to apply
|
|
changes to both using patch files and `git apply` or `patch` commands.
|
|
|
|
See details on [how to contribute](https://docs.cryptpad.fr/en/how_to_contribute.html)
|
|
in the upstream docs.
|
|
|
|
## Dev environment
|
|
|
|
To start a local dev instance, forget about the files in the root of this repo
|
|
and simply work in the [cryptpad](cryptpad/) sub directory. In other words,
|
|
follow [upstream dev guide](https://docs.cryptpad.fr/en/dev_guide/setup.html).
|
|
|
|
When done, a `git diff` will show some changes. Those in the `cryptpad/` sub
|
|
directory should go to upstream. Anything else, notably the [customize](customize/)
|
|
directory, lives in this repo.
|
|
|
|
## Production instance
|
|
|
|
To build for prod deployment, you'll need [podman](https://podman.io).
|
|
Create prod build artifacts manually with:
|
|
|
|
./tools/build-prod.sh
|
|
|
|
The script creates few files in the `build` directory. Notably, the two files
|
|
required for prod deployment are:
|
|
|
|
- `cryptpad-container-img-<git-commit-hash>.tar.gz`: container file with
|
|
the nodejs server
|
|
- `cryptpad-static-<git-commit-hash>.tar.gz`: static files served by
|
|
nginx frontend
|
|
|
|
Copy both files to production machines. The `cryptpad-container-img.tar.gz` can
|
|
be loaded on the machine with:
|
|
|
|
podman load path/to/cryptpad-container-img.tar.gz
|
|
|
|
Unpack the static files into a temp dir and sync with the prod dir:
|
|
|
|
rsync -rl --chown root:root --delete-after tmpdir/ path/to/proddir/
|
|
|
|
There are also a couple of config files, `config.js` and `nginx.conf`, in the root
|
|
of this repo. These are production configs and will eventually move to
|
|
another location with all the other prod infra configs.
|
|
|
|
All the manual steps described above will disappear once a central prod infra
|
|
is in place.
|