mirror of
https://git.sr.ht/~cadence/tube-docs
synced 2025-10-27 19:59:12 +00:00
Currently the documentation only shows how to talk to the system service manager, which doesn't work for user services, so show both usages in the docs. Also make clear that root privileges are needed for the interaction with the system service manager.
180 lines
3.4 KiB
Markdown
180 lines
3.4 KiB
Markdown
# Installing NewLeaf
|
|
|
|
## System dependencies
|
|
|
|
- python3 (v3.7+ ?)
|
|
- python3-venv
|
|
|
|
## Prepare
|
|
|
|
We suggest you create a new user to run NewLeaf as, for security reasons.
|
|
|
|
```
|
|
# adduser cloudtube
|
|
# su cloudtube
|
|
```
|
|
|
|
## Installing
|
|
|
|
Clone the repo:
|
|
|
|
```
|
|
$ git clone https://git.sr.ht/~cadence/NewLeaf
|
|
$ cd NewLeaf
|
|
```
|
|
|
|
Create a Python virtual environment, for separating dependencies:
|
|
|
|
Note: `/bin/activate` only works with the bash shell. [See here for fish shell.](https://github.com/justinmayer/virtualfish)
|
|
|
|
```
|
|
$ python3 -m venv newleaf-venv
|
|
$ source newleaf-venv/bin/activate
|
|
```
|
|
|
|
Install dependencies:
|
|
|
|
```
|
|
$ pip3 install -r requirements.txt
|
|
```
|
|
|
|
Set up the configuration. Configuration is read from the filename `configuration.py`. Copy the sample file to that name, **then edit it.**
|
|
|
|
```
|
|
$ cp configuration.sample.py configuration.py
|
|
$ $EDITOR configuration.py
|
|
```
|
|
|
|
All done! Start NewLeaf:
|
|
|
|
```
|
|
$ python3 index.py
|
|
```
|
|
|
|
In the future, from a new terminal session, NewLeaf can be started with:
|
|
|
|
```
|
|
$ cd [installation directory]
|
|
$ source newleaf-venv/bin/activate
|
|
$ python3 index.py
|
|
```
|
|
|
|
## Updating
|
|
|
|
```
|
|
$ cd [installation directory]
|
|
$ source newleaf-venv/bin/activate
|
|
$ git pull
|
|
$ pip3 install -r requirements.txt
|
|
```
|
|
|
|
Then start:
|
|
|
|
```
|
|
$ python3 index.py
|
|
```
|
|
|
|
## systemd service
|
|
|
|
If you want to control the services with systemd, you can use these files. This is optional.
|
|
|
|
This service should be run as the cloudtube user rather than as the system.
|
|
|
|
You may need to adjust the paths in these files.
|
|
|
|
### As user service
|
|
|
|
If you find that these processes terminate when you log out, see the documentation for [`libpam-systemd`](https://manpages.debian.org/stretch/libpam-systemd/pam_systemd.8.en.html) and [`logind.conf`](https://manpages.debian.org/stretch/systemd/logind.conf.5.en.html).
|
|
|
|
```
|
|
[Unit]
|
|
Description=NewLeaf
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart=/usr/local/bin/python3 /home/cloudtube/NewLeaf/index.py
|
|
WorkingDirectory=/home/cloudtube/NewLeaf
|
|
|
|
# Restart timing
|
|
Restart=always
|
|
RestartSec=60
|
|
|
|
# Disable logs
|
|
StandardOutput=null
|
|
StandardError=null
|
|
SyslogIdentifier=newleaf
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
Save to `~/.config/systemd/user/newleaf.service`.
|
|
|
|
#### Start service
|
|
|
|
```
|
|
$ systemctl --user daemon-reload
|
|
$ systemctl --user start newleaf
|
|
```
|
|
|
|
...and if all is successful...
|
|
|
|
```
|
|
$ systemctl --user enable newleaf
|
|
```
|
|
|
|
### As system service
|
|
|
|
```
|
|
[Unit]
|
|
Description=NewLeaf
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart=/home/cloudtube/newleaf-venv/bin/python3 /home/cloudtube/NewLeaf/index.py
|
|
WorkingDirectory=/home/cloudtube/NewLeaf
|
|
# Restart timing
|
|
Restart=always
|
|
RestartSec=60
|
|
|
|
# Disable logs
|
|
StandardOutput=null
|
|
StandardError=null
|
|
SyslogIdentifier=newleaf
|
|
|
|
# User to run as
|
|
User=cloudtube
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
Save to `/etc/systemd/system/newleaf.service`.
|
|
|
|
#### Start service
|
|
|
|
```
|
|
# systemctl daemon-reload
|
|
# systemctl start newleaf
|
|
```
|
|
|
|
...and if all is successful...
|
|
|
|
```
|
|
# systemctl enable newleaf
|
|
```
|
|
|
|
## nginx reverse proxy
|
|
|
|
This will allow people to access NewLeaf over HTTPS and without a port number in the URL.
|
|
|
|
You should do this if:
|
|
|
|
- You will run a public NewLeaf instance
|
|
- You will run a public CloudTube instance (NewLeaf also needs to be public)
|
|
|
|
If this installation is a test, or for your personal use, you don't need to do this.
|
|
|
|
Follow the steps [on the nginx documentation page →](https://git.sr.ht/~cadence/tube-docs/tree/main/item/docs/Proxy%20with%20nginx.md)
|