| 1 | Overview |
|---|
| 2 | |
|---|
| 3 | Alue will be a discussion forum system providing a web-based forum |
|---|
| 4 | interface, a NNTP (Netnews) interface and an email interface, all with |
|---|
| 5 | equal status. What will be unusual compared to most of the competition |
|---|
| 6 | is that all these interfaces will be coequal views to the same |
|---|
| 7 | abstract discussion, instead of being primarily one of these things |
|---|
| 8 | and providing the others as bolted-on gateways. |
|---|
| 9 | |
|---|
| 10 | Currently NNTP access is implemented and essentially fully functional. |
|---|
| 11 | HTTPS access provides basic functionality. HTTPS administration is |
|---|
| 12 | lacking, and is under development. |
|---|
| 13 | |
|---|
| 14 | |
|---|
| 15 | Warnings |
|---|
| 16 | |
|---|
| 17 | In general - Alue is under construction. This has several |
|---|
| 18 | consequences: |
|---|
| 19 | |
|---|
| 20 | - Alue currently requires an expert operator. |
|---|
| 21 | |
|---|
| 22 | - Alue is security sensitive but has not been inspected or audited |
|---|
| 23 | for security issues. |
|---|
| 24 | |
|---|
| 25 | - No stability of file formats or other interfaces is promised, and |
|---|
| 26 | no upgrade support is provided. |
|---|
| 27 | |
|---|
| 28 | |
|---|
| 29 | Requirements |
|---|
| 30 | |
|---|
| 31 | Alue is intended to be installed by the system administrator. While |
|---|
| 32 | installing it in one's own home directory is technically possible, it |
|---|
| 33 | is not recommended and may be a violation of a relevant acceptable |
|---|
| 34 | usage policy (since Alue opens ports to the Internet). |
|---|
| 35 | |
|---|
| 36 | Alue requires a standards-compliant C++ compiler, a recent Boost |
|---|
| 37 | release (0.38 has been tested; 0.35 is only grudgingly supported[1]), |
|---|
| 38 | and the GnuTLS library. |
|---|
| 39 | |
|---|
| 40 | A SSL/TLS key and a certificate (whether self-signed or CA-issued) are |
|---|
| 41 | needed. It is not possible to run Alue without SSL/TLS support. |
|---|
| 42 | |
|---|
| 43 | Alue has been developed on Debian GNU/Linux, but is likely to work on |
|---|
| 44 | any POSIX system with no or minimal changes. A port to Windows is |
|---|
| 45 | expected to be relatively simple but needs a competent volunteer. |
|---|
| 46 | |
|---|
| 47 | [1] Alue can be run on Boost 0.35 but in that case requires a copy of |
|---|
| 48 | boost/asio/buffers_iterator.hpp from 0.36 or later (and trivial |
|---|
| 49 | changes to the source to use that file). |
|---|
| 50 | |
|---|
| 51 | |
|---|
| 52 | Configuration |
|---|
| 53 | |
|---|
| 54 | The ports used can be specified on the command line: |
|---|
| 55 | |
|---|
| 56 | --nntp-port for NNTP (default 119) |
|---|
| 57 | --nntps-port for NNTP over SSL/TLS (default 563) |
|---|
| 58 | --https-port for HTTP over SSL/TLS (default 443) |
|---|
| 59 | |
|---|
| 60 | Each takes as an argument a port specification: either a number or a |
|---|
| 61 | name listed in /etc/services. If a well-known port (<1024) is used, |
|---|
| 62 | then Alue must usually be started as root. |
|---|
| 63 | |
|---|
| 64 | Alue does not support cleartext HTTP without changes to the source. |
|---|
| 65 | Since most HTTP clients also support HTTPS, there seems to be no |
|---|
| 66 | justification to enable the less secure cleartext protocol. (The same |
|---|
| 67 | argument unfortunately does not apply to NNTP, since NNTP with |
|---|
| 68 | STARTTLS and NNTPS are not supported by many widely used clients.) |
|---|
| 69 | |
|---|
| 70 | If Alue is started as root, pass --user USER on the command line to |
|---|
| 71 | tell Alue to drop root privileges and switch to USER after |
|---|
| 72 | initialization. |
|---|
| 73 | |
|---|
| 74 | Alue logs into the file alue.log in the current directory, unless |
|---|
| 75 | overridden with the --logfile option. The log buffer is flushed each |
|---|
| 76 | time Alue becomes idle. There is currently no way to instruct Alue to |
|---|
| 77 | close and reopen the log. |
|---|
| 78 | |
|---|
| 79 | Alue uses the uname nodename as the system's name (for Xref and Path), |
|---|
| 80 | unless overridden with the --canonical-name option. This should be a |
|---|
| 81 | globally unique name. |
|---|
| 82 | |
|---|
| 83 | Put the SSL/TLS private key (in PEM format) in the file key.pem (or |
|---|
| 84 | give another file name on the command line using the option |
|---|
| 85 | --key-file). |
|---|
| 86 | |
|---|
| 87 | Put the SSL/TLS X.509 certificate (in PEM format) in the file cert.pem |
|---|
| 88 | (or give another file name on the command line using the option |
|---|
| 89 | --cert-file). If you need intermediate certificates (for example if |
|---|
| 90 | such are provided to you by your Certificate Authority), concatenate |
|---|
| 91 | them in the same file, in the order of certification (that is, each |
|---|
| 92 | certificate is certified by the certification immediately after it). |
|---|
| 93 | |
|---|
| 94 | The options --log-http, --log-nntp and --log-smtp take one argument |
|---|
| 95 | each (a boolean), and all default to false. If true, then the |
|---|
| 96 | corresponding protocol is extensively logged. Do note the privacy |
|---|
| 97 | implications. |
|---|
| 98 | |
|---|
| 99 | The option --vm-limit allows you to specify a virtual memory ulimit |
|---|
| 100 | for the Alue process, in order to protect the host system from runaway |
|---|
| 101 | allocation bugs in Alue (none currently known, but they have |
|---|
| 102 | occasionally manifested during development testing). |
|---|
| 103 | |
|---|
| 104 | The option --include-dir specifies the directory where the HTML and |
|---|
| 105 | email template files reside. The option --files-dir specifies the |
|---|
| 106 | directory where files like CSS stylesheets and images (to be served |
|---|
| 107 | verbatim by the HTTPS system) are located. The template language is |
|---|
| 108 | currently undocumented; a sample set of templates (used to run the |
|---|
| 109 | test installation) is available at |
|---|
| 110 | http://git.verbosify.org/?p=verbosify-templates/.git;a=summary |
|---|
| 111 | git://git.verbosify.org/git/verbosify-templates.git/ |
|---|
| 112 | |
|---|
| 113 | The option --operator-email specifies an email address through which |
|---|
| 114 | the operator is reachable. This address will be used in |
|---|
| 115 | Alue-generated emails. |
|---|
| 116 | |
|---|
| 117 | Central database |
|---|
| 118 | |
|---|
| 119 | The central database is located in the file alue.db2 in the current |
|---|
| 120 | directory. Its format is described in the file db/FORMAT.txt. It |
|---|
| 121 | stores messages as well as information about groups and users. |
|---|
| 122 | |
|---|
| 123 | |
|---|
| 124 | Creating a group |
|---|
| 125 | |
|---|
| 126 | NOTE: There is currently no way to create groups without shutting down |
|---|
| 127 | the server. (A web-based method is planned.) |
|---|
| 128 | |
|---|
| 129 | Step One. Stop the server. (This is important, since editing the |
|---|
| 130 | message database while the server is running can cause data |
|---|
| 131 | corruption.) |
|---|
| 132 | |
|---|
| 133 | Step Two. Append to the message database a block having the following |
|---|
| 134 | format: |
|---|
| 135 | |
|---|
| 136 | .BEGIN <timestamp> |
|---|
| 137 | NEWGROUP <groupname> |
|---|
| 138 | DESCRIPTION <short description> |
|---|
| 139 | READING <reading_policy> |
|---|
| 140 | .END |
|---|
| 141 | |
|---|
| 142 | Note that the file is line-oriented; each line in the above schema |
|---|
| 143 | must correspond to a single line in the file. The lines in the file |
|---|
| 144 | must not be indented. Case is significant. |
|---|
| 145 | |
|---|
| 146 | Timestamp should have the ISO format (yyyymmddThhmmss) and should |
|---|
| 147 | indicate the time when the group is created. It should be later than |
|---|
| 148 | any other timestamp in the file, and earlier than any timestamp that |
|---|
| 149 | will be added later (by Alue, for example). |
|---|
| 150 | |
|---|
| 151 | Groupname should follow USEFOR syntax. |
|---|
| 152 | |
|---|
| 153 | Description is free-form text. It must be a single line and should be |
|---|
| 154 | short. |
|---|
| 155 | |
|---|
| 156 | Reading_policy is either PERMITTED (allowing unidentified users to |
|---|
| 157 | read the group) or RESTRICTED (requiring authentication before the |
|---|
| 158 | group can be read). Crossposting between restricted and other groups |
|---|
| 159 | is not possible. |
|---|
| 160 | |
|---|
| 161 | Step Three. Start the server again. |
|---|
| 162 | |
|---|
| 163 | |
|---|
| 164 | Contact |
|---|
| 165 | |
|---|
| 166 | For access to the source and updates, see |
|---|
| 167 | http://git.verbosify.org/?p=alue.git;a=summary |
|---|
| 168 | git://git.verbosify.org/git/alue.git/ |
|---|
| 169 | |
|---|
| 170 | There is an installation running on verbosify.org. Accounts are not |
|---|
| 171 | currently publicly available, but there are serveral groups that are |
|---|
| 172 | available (read-only) to unidentified users. |
|---|
| 173 | |
|---|
| 174 | Bug reports, patches and other comments should be sent to |
|---|
| 175 | antti-juhani@kaijanaho.fi |
|---|