diff options
author | Christian Cleberg <hello@cleberg.net> | 2024-01-08 20:11:17 -0600 |
---|---|---|
committer | Christian Cleberg <hello@cleberg.net> | 2024-01-08 20:11:17 -0600 |
commit | 25945b8fead989cca09a23983623b63ce36dcc0c (patch) | |
tree | 0dfc869ce8b028e04ce9da196af08779780915ce /blog/2023-06-23-self-hosting-convos-irc.org | |
parent | 22b526be60bf4257c2a1d58a5fad59cf6b044375 (diff) | |
download | cleberg.net-25945b8fead989cca09a23983623b63ce36dcc0c.tar.gz cleberg.net-25945b8fead989cca09a23983623b63ce36dcc0c.tar.bz2 cleberg.net-25945b8fead989cca09a23983623b63ce36dcc0c.zip |
feat: total re-write from Emacs org-mode to Zola markdown
Diffstat (limited to 'blog/2023-06-23-self-hosting-convos-irc.org')
-rw-r--r-- | blog/2023-06-23-self-hosting-convos-irc.org | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/blog/2023-06-23-self-hosting-convos-irc.org b/blog/2023-06-23-self-hosting-convos-irc.org deleted file mode 100644 index b86d01b..0000000 --- a/blog/2023-06-23-self-hosting-convos-irc.org +++ /dev/null @@ -1,173 +0,0 @@ -#+title: Self-Hosting Convos: IRC Web Client -#+date: 2023-06-23 - -** Convos -:PROPERTIES: -:CUSTOM_ID: convos -:END: -[[https://convos.chat/][Convos]] is an always-online web client for IRC. -It has a few features that made it attractive to me as a self-hosted -option: - -- Extremely simple Docker Compose installation method. -- Runs in the background and monitors chats even while you're not logged - in. -- Neatly organized sidebar for conversation and client settings. -- Ability to connect to different hosts and create profiles for hosts. -- By default, registration is closed to the public. You can enable - public registration on the Settings page or generate invitation links - on the Users page. -- Customization of the client theme, organization name and URL, admin - email, and video service. - -** Docker Installation -:PROPERTIES: -:CUSTOM_ID: docker-installation -:END: -To install Convos, simply create a directory and a =docker-compose.yml= -file: - -#+begin_src sh -mkdir ~/convos && cd ~/convos -nano docker-compose.yml -#+end_src - -With the =docker-compose.yml= file open, paste the configuration below -into the file. You can customize the host port to be something unique, -such as =21897:3000=. You can also change the =data= folder to be a -docker volume instead, if you prefer. - -#+begin_src config -version: '3' - -services: - convos: - image: 'convos/convos:stable' - ports: - - '3000:3000' - volumes: - - './data:/data' - environment: - - CONVOS_REVERSE_PROXY=1 - restart: always -#+end_src - -Save the =docker-compose.yml= file and bring the container up: - -#+begin_src sh -sudo docker-compose up -d -#+end_src - -At this point, Convos is available at =<server_ip>:3000= but not -available to the public. - -** Nginx Reverse Proxy -:PROPERTIES: -:CUSTOM_ID: nginx-reverse-proxy -:END: -If you're using Nginx, you can create a configuration file for the -convos application. Start by opening the file: - -#+begin_src sh -nano /etc/nginx/sites-available/convos -#+end_src - -Within the nginx configuration file, paste the following content and be -sure to update =convos.example.com= to match your domain and -=127.0.0.1:3000= to match the port you opened in the -=docker-compose.yml= file. - -#+begin_src config -# Host and port where convos is running -upstream convos_upstream { server 127.0.0.1:3000; } - -server { - if ($host ~ ^[^.]+\.example\.com$) { - return 301 https://$host$request_uri; - } - - listen [::]:80; - listen 80; - server_name convos.example.com; - return 404; -} - -server { - listen [::]:443 ssl http2; - listen 443 ssl http2; - server_name convos.example.com; - access_log /var/log/nginx/convos.access.log; - error_log /var/log/nginx/convos.error.log; - - location / { - proxy_pass http://convos_upstream; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - client_max_body_size 0; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Request-Base "$scheme://$host/"; - } - - ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; - include /etc/letsencrypt/options-ssl-nginx.conf; - ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; -} -#+end_src - -Once the file is saved, link it to the =sites-enabled= directory and -restart Nginx. - -#+begin_src sh -sudo ln -s /etc/nginx/sites-available/convos /etc/nginx/sites-enabled/convos -sudo systemctl restart nginx.service -#+end_src - -** Screenshots -:PROPERTIES: -:CUSTOM_ID: screenshots -:END: -See the screenshots below for an example of the Convos homepage and an -excerpt of the chat screen. - -There are numerous themes to choose from; the theme shown in the images -below is Dracula. - -#+caption: Convos Home -[[https://img.cleberg.net/blog/20230623-convos/convos_home.png%20%22Convos%20Home%22]] - -#+caption: Convos Chat -[[https://img.cleberg.net/blog/20230623-convos/convos_chat.png%20%22Convos%20Chat%22]] - -** Registering a Nickname -:PROPERTIES: -:CUSTOM_ID: registering-a-nickname -:END: -Hop into the server channel so that you can message NickServ. In the -case of Convos, the default sever is libera.chat. Simply click the -=libera= conversation at the top of the sidebar to open it. Once the -chat is open, you can claim a nickname by typing: - -#+begin_src txt -/nick <nick> -#+end_src - -If the nickname is available, and you'd like to register the nickname to -yourself, you'll need to type another command: - -#+begin_src txt -/msg NickServ REGISTER -<password> <email> -#+end_src - -On libera.chat, the server will send a confirmation email with a command -that you must message in IRC to verify registration of the nickname: - -#+begin_src txt -/msg NickServ VERIFY REGISTER <nick> <verification_code> -#+end_src - -Once entered, the server should confirm registration of the nickname to -the supplied email with the password specified. |