mirror of
https://github.com/samsonjs/agate.git
synced 2026-03-25 09:05:50 +00:00
add tools for Debian
This commit is contained in:
parent
742a423021
commit
86e0fe665d
6 changed files with 153 additions and 0 deletions
2
tools/README.md
Normal file
2
tools/README.md
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
This directory contains some useful tools if you want to use Agate like service files or installer scripts. If you use Agate on a system not present here, your pull request is welcome!
|
||||
We also welcome pull requests for other files for tools you might find helpful to use in conjunction with Agate.
|
||||
30
tools/debian/README.md
Normal file
30
tools/debian/README.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
If you want to run agate on a pretty much standard Debian install, this
|
||||
directory contains some additional materials that may help you.
|
||||
|
||||
Please keep in mind that there is no warranty whatsoever provided for this
|
||||
software as specified in the disclaimer in the MIT license or section 7 of
|
||||
the Apache license respectively.
|
||||
|
||||
To run Agate as a service with systemd, put the `gemini.service` file
|
||||
in the directory `/etc/systemd/system/` (copy or move it there).
|
||||
|
||||
This service file has some comments you may want to look at before using it!
|
||||
|
||||
If you use the service file and want the agate logs in a separate file,
|
||||
using the gemini.conf file and putting it in the directory
|
||||
`/etc/rsyslog.d/` will make the agate log messages appear in a file
|
||||
called `/var/log/gemini.log`.
|
||||
|
||||
If you use Debians `logrotate` and want to automatically rotate these log files,
|
||||
you can use the `geminilogs` file and put it in `/etc/logrotate.d/`.
|
||||
|
||||
You can also use the `install.sh` file which will check if these systems
|
||||
are installed (but not if they are running) and copy the files to their
|
||||
described locations. Please ensure your systems hostname is set correctly
|
||||
(i.e. `uname -n` should give your domain name).
|
||||
|
||||
You will have to run this with elevated privileges, i.e. `sudo ./install.sh`
|
||||
to work correctly. This install script will also create the necessary content
|
||||
directories and the certificate and private key in the `/srv/gemini/`
|
||||
directory. After the script is done sucessfully, you can start by putting
|
||||
content in `/srv/gemini/content/`, the server is running already!
|
||||
2
tools/debian/gemini.conf
Normal file
2
tools/debian/gemini.conf
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
if $programname == 'gemini' then /var/log/gemini.log
|
||||
& stop
|
||||
28
tools/debian/gemini.service
Normal file
28
tools/debian/gemini.service
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# This file is part of the Agate software and licensed under either the
|
||||
# MIT license or Apache license at your option.
|
||||
#
|
||||
# Please keep in mind that there is no warranty whatsoever provided for this
|
||||
# software as specified in the disclaimer in the MIT license or section 7 of
|
||||
# the Apache license respectively.
|
||||
|
||||
[Unit]
|
||||
Description=Agate gemini server
|
||||
|
||||
[Service]
|
||||
# you should place the certificate and key file in this directory
|
||||
# and place the contents to be displayed in /srv/gemini/content
|
||||
WorkingDirectory=/srv/gemini/
|
||||
# assumes the device hostname is set correctly
|
||||
ExecStart=agate --hostname $(uname -n) --lang en
|
||||
|
||||
Restart=always
|
||||
RestartSec=1
|
||||
|
||||
StandardOutput=syslog
|
||||
StandardError=syslog
|
||||
# adds a syslog identifier so you can have these logs filtered into
|
||||
# a separate file
|
||||
SyslogIdentifier=gemini
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
10
tools/debian/geminilogs
Normal file
10
tools/debian/geminilogs
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
/var/log/gemini.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 14
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0640 root adm
|
||||
sharedscripts
|
||||
}
|
||||
81
tools/debian/install.sh
Executable file
81
tools/debian/install.sh
Executable file
|
|
@ -0,0 +1,81 @@
|
|||
#!/bin/bash
|
||||
# This file is part of the Agate software and licensed under either the
|
||||
# MIT license or Apache license at your option.
|
||||
#
|
||||
# Please keep in mind that there is not warranty whatsoever provided for this
|
||||
# software as specified in the disclaimer in the MIT license or section 7 of
|
||||
# the Apache license respectively.
|
||||
|
||||
echo -n "checking:agate......."
|
||||
if command -v agate >/dev/null
|
||||
then
|
||||
echo "found"
|
||||
else
|
||||
echo "FAILED"
|
||||
echo "Agate is probably not in your PATH variable."
|
||||
echo "If you installed it with cargo, try linking the binary to /usr/local/bin with something like this:"
|
||||
echo " ln -s $HOME/.cargo/bin/agate /usr/local/bin/agate"
|
||||
echo "or what seems reasonable to you."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -n "checking:systemd....."
|
||||
if [[ "$(cat /proc/1/comm)" != "systemd" ]]
|
||||
then
|
||||
echo "NOT THE INIT PROCESS"
|
||||
echo "Your system seems to not use systemd, sorry. Aborting."
|
||||
exit 1
|
||||
else
|
||||
echo "installed and running"
|
||||
fi
|
||||
|
||||
echo -n "checking:rsyslogd...."
|
||||
if command -v rsyslogd >/dev/null
|
||||
then
|
||||
echo -n "installed"
|
||||
if ps cax | grep -q "rsyslogd"
|
||||
then
|
||||
echo " and running"
|
||||
else
|
||||
echo " but not running!"
|
||||
echo "You should enable rsyslogd to use this functionality."
|
||||
fi
|
||||
else
|
||||
echo "NOT INSTALLED!"
|
||||
echo "Aborting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -n "checking:logrotate..."
|
||||
if type logrotate >/dev/null 2>&1
|
||||
then
|
||||
echo "installed, but I cannot check if it is enabled"
|
||||
else
|
||||
echo "NOT INSTALLED!"
|
||||
echo "Aborting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# immediately exit if one of the following commands fails
|
||||
set -e
|
||||
|
||||
echo "copying config files..."
|
||||
cp gemini.service /etc/systemd/system/
|
||||
cp gemini.conf /etc/rsyslog.d/
|
||||
cp geminilogs /etc/logrotate.d/
|
||||
|
||||
echo "setting up content files..."
|
||||
mkdir -p /srv/gemini/content
|
||||
openssl req -x509 -newkey rsa:4096 -keyout /srv/gemini/key.rsa -out /srv/gemini/cert.pem \
|
||||
-days 3650 -nodes -subj "/CN=$(uname -n)"
|
||||
|
||||
echo "starting service..."
|
||||
systemctl daemon-reload
|
||||
systemctl restart rsyslog
|
||||
systemctl enable gemini
|
||||
systemctl start gemini
|
||||
|
||||
echo "setup done, checking..."
|
||||
# wait until the restarts would have timed out
|
||||
sleep 10
|
||||
systemctl status gemini
|
||||
Loading…
Reference in a new issue