Allow importing existing setups, add basic auth for nginx pisg files
This commit is contained in:
parent
3d1adaf31b
commit
93d22e3765
42
README.md
42
README.md
|
@ -1,17 +1,45 @@
|
||||||
Docker ZNC
|
#Docker ZNC
|
||||||
==========
|
|
||||||
|
|
||||||
Suitable for create docker containers running ZNC (and sshd!)
|
Suitable for creating docker containers running ZNC. Now with pisg!
|
||||||
|
|
||||||
|
##Setup
|
||||||
**General steps:**
|
**General steps:**
|
||||||
|
|
||||||
* Install docker
|
* Install docker
|
||||||
* Clone this repo, cd in
|
* Clone this repo, cd in
|
||||||
* Load it as a template: `sudo docker build -t znc .`
|
* Load it as a template: `sudo docker build -t znc .`
|
||||||
* Start a new container: `sudo docker run -it -p 666:22 -p 4421:4421 znc /start`
|
* Start a new container: `sudo docker run -it -p 666:22 -p 4421:4421 -p 80:80 znc /start`
|
||||||
|
* Configure znc
|
||||||
On first start, the znc configuration will run. Set it up as needed; the port znc listens on must be exposed in the command used to start the container (-p 4421:4421 above). The final question asks if you want to start znc, **choose `NO`**.
|
|
||||||
|
|
||||||
* Find the new container in your list: `sudo docker ps -a`
|
* Find the new container in your list: `sudo docker ps -a`
|
||||||
* Run it in the background: `sudo docker start mycontainerid`
|
* Run it in the background: `sudo docker start mycontainerid`
|
||||||
|
|
||||||
|
When you first run the image, you'll be presented with two ways to configure znc:
|
||||||
|
|
||||||
|
###Set up a new znc instance
|
||||||
|
|
||||||
|
If no import of existing znc data is available, the znc configuration will run. Set it up as needed; the port znc listens on must be exposed in the command used to start the container (-p 4421:4421 above). The final question asks if you want to start znc, **choose `NO`!!**.
|
||||||
|
|
||||||
|
###Import an existing znc instance's configuration
|
||||||
|
|
||||||
|
You may migrate an existing ZNC instance into this container by providing a tarball of the source .znc directory. The tarball should contain the .znc directory, only, with everything inside it. The start script will prompt you to insert the .tar.gz file.
|
||||||
|
|
||||||
|
##Pisg
|
||||||
|
|
||||||
|
This container creates [pisg]-style channel statistics ([example]) for any ZNC users with the "log" module enabled. The stats are regenerated nightly and nginx serves the files on port 80 with a directory structure like this:
|
||||||
|
|
||||||
|
* znc username
|
||||||
|
* znc network name
|
||||||
|
* \#channelname.html
|
||||||
|
|
||||||
|
The channel information is private, nginx is configured with HTTP basic authentication; the password is prompted for during setup.
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
* Ensure pisg cache files don't use too much disk space (/home/znc/pisg/cache)
|
||||||
|
* If this is a problem, maybe tar/gz channel groups and extract when necessary when running pisg
|
||||||
|
* Provide a way to make certain channel stat files public
|
||||||
|
* Provide a way to share channel files with secret links
|
||||||
|
* Provide all-time, yearly, and monthly pisg outputs
|
||||||
|
|
||||||
|
[pisg]:http://pisg.sourceforge.net/
|
||||||
|
[example]:http://pisg.sourceforge.net/examples
|
||||||
|
|
2
default
2
default
|
@ -4,6 +4,8 @@ server {
|
||||||
root /home/znc/pisg/output;
|
root /home/znc/pisg/output;
|
||||||
index index.html index.htm;
|
index index.html index.htm;
|
||||||
server_name localhost;
|
server_name localhost;
|
||||||
|
auth_basic "Restricted";
|
||||||
|
auth_basic_user_file /etc/nginx/htpasswd;
|
||||||
location / {
|
location / {
|
||||||
autoindex on;
|
autoindex on;
|
||||||
try_files $uri $uri/ =404;
|
try_files $uri $uri/ =404;
|
||||||
|
|
62
start
62
start
|
@ -1,11 +1,65 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if [ ! -f /home/admin/znc_configured ]; then
|
if [ ! -f /home/admin/znc_configured ]; then
|
||||||
touch /home/admin/znc_configured
|
echo "Welcome! I need to ask you a few questions to configure this ZNC instance for your liking. First, press enter choose and choose a time zone."
|
||||||
echo "Configure ZNC to your liking now. Remember to choose NO when asked to launch znc!!"
|
read
|
||||||
|
|
||||||
|
dpkg-reconfigure tzdata
|
||||||
|
|
||||||
|
if [ ! -f /znc.tar.gz ]; then
|
||||||
|
echo "If you want to load data from and existing znc instance create a tar.gz archive containing only the .znc directory and place it in the root of this container as znc.tar.gz."
|
||||||
|
echo "Copy the archive to the container using this command: cat znc.tar.gz | docker exec -i <containerid> bash -c \"/bin/cat > /znc.tar.gz\""
|
||||||
|
echo "Press enter when done. Or, to set up a new znc instance, press enter now."
|
||||||
|
read
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /znc.tar.gz ]; then
|
||||||
|
su -c "cd /home/znc ; tar zxvf /znc.tar.gz " znc
|
||||||
|
rm /znc.tar.gz
|
||||||
|
echo "Extracted znc data"
|
||||||
|
if [ ! -d /home/znc/.znc ]; then
|
||||||
|
echo ".znc was not in the archive! Aborted"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
chown -R znc /home/znc/.znc
|
||||||
|
chgrp -R znc /home/znc/.znc
|
||||||
|
chmod -R 700 /home/znc/.znc
|
||||||
|
echo "ZNC settings loaded successfully."
|
||||||
|
else
|
||||||
|
echo "Configure ZNC to your liking now. Remember to choose NO when asked to launch znc!!"
|
||||||
su -c "/usr/bin/znc --makeconf" znc
|
su -c "/usr/bin/znc --makeconf" znc
|
||||||
exit
|
echo "ZNC configured successfully."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Enter a username and password to view pisg statistics"
|
||||||
|
while [ 1 ]; do
|
||||||
|
|
||||||
|
echo -n "Username: "
|
||||||
|
read ng_username
|
||||||
|
|
||||||
|
echo -n "Password: "
|
||||||
|
read -s ng_password
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -n "Password (again): "
|
||||||
|
read -s ng_password_
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [ ! "$ng_password" == "$ng_password_" ] || [ -z "$ng_password" ] || [ -z "$ng_username" ] ; then
|
||||||
|
echo "Passwords must match and not be blank"
|
||||||
|
echo ""
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "$ng_username:$(openssl passwd -crypt $ng_password)\n" > /etc/nginx/htpasswd
|
||||||
|
|
||||||
|
touch /home/admin/znc_configured
|
||||||
|
|
||||||
|
echo "Now, run docker start <containerid> run znc in the background."
|
||||||
|
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
supervisord
|
supervisord
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue