summaryrefslogtreecommitdiff
path: root/weblate/SETUP.md
blob: a832d2f49ae18b16737acde0f0f16e4d5ea5a528 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
## Weblate.taler.net Setup Notes

### The purpose of this is to document how the weblate.taler.net service was built, in the event that it needs to be repaired, changed, reproduced, etc.

Always refer to https://docs.weblate.org/ if necessary, or just for a good laugh.

### Upgrading

See latest recommendations:
https://docs.weblate.org/en/latest/admin/upgrade.html?highlight=upgrade#generic-upgrade-instructions

### Basic structure:

This weblate instance runs as a python3 virtualenv under non-priv `/home/weblate`.

The generic instructions used to build the site are here, and were followed closely:
https://docs.weblate.org/en/latest/admin/install/venv-debian.html

#### Notes on general installation:

* settings document is in `~/weblate-env/lib/python3.8/site-packages/weblate/settings.py` (see symlink in ~) (backup copy in `.`)
* "data directory" or "DATA_DIR" is `~/weblate-env/lib/python3.8/site-packages/data/` (see symlink to `DATA_DIR/` in ~)
* virtualenv is invoked anytime with `. ~/weblate-env/bin/activate`.  This activates the weblate path to access weblate binaries without full paths.

### Configuration

#### `/home/weblate` shell account

  non-priv user with access via SSH key
  celery and uwsgi services run under this user (see *systemd* below)

#### postgres

 configured for `localhost` access only (ie - `$ psql`)
 no password
 Unix `weblate` user has full control over psql 'weblate' user
 Must manually create 'weblate' database
 DB Credentials added to `settings.py` "DATABASES" section

#### e-mail

 weblate@taler.net
  * no password
  * available via localhost using SMTP
  * info added to `settings.py` in Django format:
    `EMAIL_HOST_USER = 'weblate'`
    (`EMAIL_HOST` and `EMAIL_PORT` not required re: defaults to localhost and 25)
  * Test E-mail from `/home/weblate`:

    ```
    # telnet localhost 25
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 gv.taler.net ESMTP Postfix
    HELO localhost
    250 gv.taler.net
    MAIL From: weblate@taler.net
    250 2.1.0 Ok
    RCPT To: weblate@gnunet.org
    250 2.1.5 Ok
    DATA
    354 End data with <CR><LF>.<CR><LF>
    hello
    .
    250 2.0.0 Ok: queued as xxxxx
    quit
    221 2.0.0 Bye
    Connection closed by foreign host.
    ```

#### Python modules

From https://docs.weblate.org/en/latest/admin/install/venv-debian.html#python-modules

All-day modules installed:

`$ pip install Weblate aeidon psycopg2-binary`

#### nginx

This root-level service can be found in the `root` repository.

#### uwsgi

uwsgi: https://docs.weblate.org/en/latest/admin/install.html?highlight=uwsgi#sample-configuration-for-nginx-and-uwsgi

See **systemd** below for customization information.

#### celery

Celery: https://docs.weblate.org/en/latest/admin/install.html#celery

See **systemd** below for customization information.

#### systemd

Our needs require running weblate under `weblate` user as a non-priv service.  This requires running celery-weblate and uwsgi-weblate services as user-level systemd services.

* See service files under `systemd-nonpriv/` in this repo.
* On server, non-priv `systemd` files live in `/home/weblate/.config/systemd/user/`
* Commands:
  `$ systemctl --user enable | disable | start | stop | status *servicename*`

### Running Weblate

After installing and customizing, log into `weblate` shell account, and invoke virtualenv:

`$ . ~/weblate-env/bin/activate`

Now run Django static files collection (required once):
(https://docs.weblate.org/en/latest/admin/install.html?highlight=uwsgi#serving-static-files)

`$ weblate collectstatic --noinput`

Weblate server should now be set up and visible at the location specified in the nginx `weblate.site` file.  If the site is visible but looks like it's missing CSS styles, that's a problem with the static files.  Common causes:

* static files were not collected
* nginx is not pointing to the correct location
  * maybe the `/home/weblate/DATA_DIR` symlink is broken?