docs/honk.8 (view raw)
1.\"
2.\" Copyright (c) 2019 Ted Unangst
3.\"
4.\" Permission to use, copy, modify, and distribute this software for any
5.\" purpose with or without fee is hereby granted, provided that the above
6.\" copyright notice and this permission notice appear in all copies.
7.\"
8.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15.\"
16.Dd $Mdocdate$
17.Dt HONK 8
18.Os
19.Sh NAME
20.Nm honk
21.Nd honk administration
22.Sh DESCRIPTION
23The
24.Nm
25daemon processes messages from other federated servers.
26This is the admin manual.
27For user operation, see
28.Xr honk 1 .
29.Ss Setup
30.Pp
31Set up a TLS reverse proxy.
32.Nm
33can listen on TCP or unix sockets, but will not terminate TLS.
34https is a required component for federation.
35Also, http signature verification requires accurate time keeping.
36.Pp
37Make sure to pass the Host header, if necessary (as for nginx).
38.Bd -literal -offset indent
39proxy_set_header Host $http_host;
40.Ed
41.Ss Build
42Building
43.Nm
44requires a go compiler 1.13 and libsqlite.
45On
46.Ox
47this is the go and sqlite3 packages.
48Other platforms may require additional development libraries or headers
49to be installed.
50Run make.
51Please be patient.
52Even on fast machines, building from source can take several seconds.
53.Ss Options
54The following options control where
55.Nm
56looks for data.
57.Bl -tag -width datadirxdirx
58.It Fl datadir Ar dir
59The root data directory, where the database and other user data are stored.
60This directory contains all user data that persists across upgrades.
61Requires write access.
62Defaults to ".".
63.It Fl viewdir Ar dir
64The root view directory, where html and other templates are stored.
65The contents of this directory are generally replaced with each release.
66Read only.
67Defaults to ".".
68.El
69.Pp
70The following options control log output.
71Acceptable values include "stderr" (the default), "stdout", "null", "syslog",
72or a file name.
73syslog messages will be sent to the UUCP facility.
74.Bl -tag -width errorlogxlogx
75.It Fl errorlog Ar log
76The error log.
77Something bad has happened.
78.It Fl infolog Ar log
79The informative messages log.
80Something has happened, but probably not too bad.
81.It Fl debuglog Ar log
82The debug log.
83There's probably no reason to care.
84.It Fl log Ar log
85Set all three logs.
86.El
87.Ss Init
88Run the
89.Ic init
90command.
91This will create the database and ask four questions, as well as creating
92the initial user.
93See below about importing existing data.
94.Ss Operation
95Run honk.
96.Ss Customization
97The funzone contains fun flair that users may add to posts and profiles.
98Add custom memes (stickers) to the
99.Pa memes
100data directory.
101Image and video files are supported.
102Add custom emus (emoji) to the
103.Pa emus
104data directory.
105PNG files are supported.
106.Pp
107Site CSS may be overridden by creating a
108.Pa views/local.css
109file in the data directory.
110A restart is required after changes.
111A site icon.png and favicon.ico will be served from the views directory
112in the data directory, if present.
113.Pp
114Custom HTML messages may be added to select pages by using the
115.Ic admin
116command.
117This interface is a little rough.
118A restart is required after changes.
119.Bl -tag -width tenletters
120.It server
121Displayed on the home page.
122.It about
123Displayed on the about page.
124.It login
125Displayed on the login form.
126.It avatar colors
127Four 32-bit hex colors (RGBA).
128.El
129.Pp
130.Ss User Admin
131New users can be added with the
132.Ic adduser
133command.
134This is discouraged.
135.Pp
136Passwords may be reset with the
137.Ic chpass Ar username
138command.
139.Pp
140Users may be deleted with the
141.Ic deluser Ar username
142command.
143.Ss Maintenance
144The database may grow large over time.
145The
146.Ic cleanup Op Ar days
147command exists to purge old external data, by default 30 days.
148This removes unreferenced, unsaved posts and attachments.
149It does not remove any original content.
150.Pp
151Backups may be performed by running
152.Ic backup dirname .
153Backups only include the minimal necessary information, such as user posts
154and follower information, but not external posts.
155.Ss Upgrade
156Stop the old honk process.
157Backup the database.
158Perform the upgrade with the
159.Ic upgrade
160command.
161Restart.
162.Pp
163The current version of the honk binary may be printed with the
164.Ic version
165command.
166.Ss unplug
167Sometimes servers simply disappear, resulting in many errors trying to deliver
168undeliverable messages.
169Running
170.Ic unplug Ar hostname
171will delete all subscriptions and pending deliveries.
172.Ss Security
173.Nm
174is not currently hardened against SSRF, server side request forgery.
175Be mindful of what other services may be exposed via localhost or the
176local network.
177.Ss Debug
178Debug mode may be enabled or disabled by running
179.Ic devel Ar on|off .
180In devel mode, secure cookies are disabled, TLS certs are not verified,
181and templates are reloaded every request.
182.Ss Import
183Data may be imported and converted from other services using the
184.Ic import
185command.
186Posts are imported and backdated to appear as old honks.
187No other information is imported.
188Currently supports Mastodon and Twitter exported data.
189.Pp
190To prepare a Mastodon data archive, extract the archive-longhash.tar.gz file.
191.Dl ./honk import username mastodon source-directory
192.Pp
193To prepare a Twitter data archive, extract the twitter-longhash.zip file.
194After unzipping the data archive, navigate to the tweet_media directory
195and unzip any zip files contained within.
196.Dl ./honk import username twitter source-directory
197.Ss Advanced Options
198To support separate mentions without a subdomain,
199e.g. @user@example.com and https://honk.example.com/u/user,
200add a ('masqname', 'example.com') row to the config table of the database.
201Route
202.Pa /.well-known/webfinger
203from the top domain to honk.
204.Pp
205Custom URL seperators (not "u" and "h") may be specified by adding
206"usersep" and "honksep" options to the config table.
207e.g. example.com/users/username/honk/somehonk instead of
208example.com/u/username/h/somehonk.
209.Sh FILES
210.Nm
211files are split between the data directory and the view directory.
212Both default to "." but may be specified by command line options.
213.Pp
214The data directory contains:
215.Bl -tag -width views/local.css
216.It Pa honk.db
217The main database.
218.It Pa blob.db
219Media and attachment storage.
220.It Pa emus
221Custom emoji.
222.It Pa memes
223Stickers and such.
224.It Pa views/local.css
225Locally customized CSS.
226.El
227.Pp
228The view directory contains:
229.Bl -tag -width views
230.It Pa views
231HTML templates and CSS files.
232.El
233.Sh EXAMPLES
234This series of commands creates a new database, sets a friendly
235welcome message, and runs honk.
236.Bd -literal -offset indent
237honk-v98> make
238honk-v98> ./honk -datadir ../honkdata init
239username: puffy
240password: OxychromaticBlowfishSwatDynamite
241listen address: /var/www/honk.sock
242server name: honk.example.com
243honk-v98> ./honk -datadir ../honkdata admin
244honk-v98> date; ./honk -datadir ../honkdata >> log 2>&1
245.Ed
246.Pp
247The views directory includes a sample pleroma.css to change color scheme.
248.Bd -literal -offset indent
249honk-v98> mkdir ../honkdata/views
250honk-v98> cp views/pleroma.css ../honkdata/views/local.css
251.Ed
252.Pp
253Upgrade to the next version.
254Clean things up a bit.
255.Bd -literal -offset indent
256datadir> cp honk.db backup.db
257datadir> cd ../honk-v99
258honk-v99> make
259honk-v99> ./honk -datadir ../honkdata upgrade
260honk-v99> ./honk -datadir ../honkdata cleanup
261honk-v99> date; ./honk -datadir ../honkdata >> log 2>&1
262.Ed
263.Sh ENVIRONMENT
264Image processing and scaling requires considerable memory.
265It is recommended to adjust the datasize ulimit to at least 1GB.
266.Sh SEE ALSO
267.Xr intro 1 ,
268.Xr honk 1
269.Sh CAVEATS
270There's no online upgrade capability.
271Upgrades may result in minutes of downtime.