From 883e5fdf0bbb704fe4fe1dd78a7ee47eddb9cada Mon Sep 17 00:00:00 2001 From: Colin Okay Date: Thu, 3 Nov 2022 07:34:15 -0500 Subject: Add: readme and install --- INSTALL | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.org | 13 +++++++++ vampire.asd | 8 +++--- 3 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 INSTALL create mode 100644 README.org diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..0cce93d --- /dev/null +++ b/INSTALL @@ -0,0 +1,94 @@ + ++----------------------------------------------+ +| BUILDING | ++----------------------------------------------+ + +I have only tested vampire using SBCL on Linux. + +First install the dependencies that are not in quicklisp: + + git clone https://cicadas.surf/cgit/colin/derrida.git ~/quicklisp/local-projects/ + git clone https://cicadas.surf/cgit/colin/vampire.git ~/quicklisp/local-projects/ + +Then cd into the vampire repo's directory and run the build script. + + cd ~/quicklisp/local-projects/vampire + sbcl --load build.lisp + +If it worked, you should be able to find the file bin/vampire. + ++------------------------------------------------------+ +| CONFIGURATION FILE | ++------------------------------------------------------+ + +The configuration file is called config.lisp. Here is an example. + + (:datastore-directory "/home/vampire/store/" + :static-directory "/home/vampire/static/" + :swank-port 5011 + :port 8081 + :downloader-threads 8) + + +The :datastore-directory and :static-directory fields are REQUIRED and +must be writable by the vampire process. In particular, a subdirectory +of the static-directory, called media, is where media files will be +stored. + +Hence, if you want to store media elsewhere, you can mount or symlink +at the ./media subdirectory to the real location. + +The :swank-port field is optional. It is the localhost port where you +can connect via SLIME to debug the live application. + ++------------------------------------------------------+ +| REVERSE PROXY | ++------------------------------------------------------+ + +I am using apache to set up a reverse proxy. If I'm running vampire on +host at 10.0.0.6, and serving over HTTPS using the domain name +vampire.yourhost.moo, then here's how I'd configure the proxy: + + + ServerName vampire.yourhost.moo + Redirect / "https://vampire.yourhost.moo/" + + + + ServerName vampire.yourhost.moo + SSLEngine on + SSLCertificateFile "/etc/letsencrypt/live/vampire.yourhost.moo/fullchain.pem" + SSLCertificateKeyFile "/etc/letsencrypt/live/vampire.yourhost.moo/privkey.pem" + + ProxyPass /clog ws://10.0.0.6:8081/clog + ProxyPass / http://10.0.0.6:8081/ + ProxyPassReverse / http://10.0.0.6:8081/ + + + + ++------------------------------------------------------+ +| SYSTEM SERVICE | ++------------------------------------------------------+ + +Use a systemd service to run vampire, ensuring that it restarts on +reboot. + + + [Unit] + Description=Vampire Service + + [Service] + Type=simple + ExecStart=/home/vampire/vampire/config --config /home/vampire/config.lisp + Restart=always + User=vampire + Group=vampire + + + [Install] + WantedBy=multi-user.target + +Put that into /etc/systemd/system/ + +and start it like any other systemd service. diff --git a/README.org b/README.org new file mode 100644 index 0000000..0c528d3 --- /dev/null +++ b/README.org @@ -0,0 +1,13 @@ +* 🧛 Vampire 🧛 + +Vampire is a web based tool for collaborative creation of "mix +tapes". It is meant to be self-hosted and shared by small groups of +friends. + +Vampire was built with love in [[https://common-lisp.net/][Common Lisp]]. It uses the excellent [[https://github.com/rabbibotton/clog][CLOG]] +system for its front end, and the easy-as-pie object prevelence system +system [[https://github.com/sharplispers/bknr.datastore][BKNR.DATASTORE]] for its backend. + +To build and deploy, see the INSTALL file in this repository. + + diff --git a/vampire.asd b/vampire.asd index f9f9717..a089d47 100644 --- a/vampire.asd +++ b/vampire.asd @@ -1,10 +1,10 @@ ;;;; vampire.asd (asdf:defsystem #:vampire - :description "Describe vampire here" - :author "Your Name " - :license "Specify license here" - :version "0.0.1" + :description "Live Collaborative Music Mixes" + :author "Colin " + :license "AGPL-3.0" + :version "0.1.0" :serial t :depends-on (#:clog #:hunchentoot -- cgit v1.2.3