Projekt

Allgemein

Profil

Aktionen

Aufgabe #1995

offen

Converse JS CDN Download auf Lokale Library mit autoupdater umstellen

Von JohannFinsterbusch vor 3 Monaten hinzugefügt. Vor 11 Tagen aktualisiert.

Status:
Feedback
Priorität:
Normal
Kategorie:
Instanz Candy
Beginn:
14.09.2024
Abgabedatum:
14.09.2024 (seit etwa 3 Monaten verspätet)
% erledigt:

100%

Geschätzter Aufwand:

Beschreibung

Derzeit läd die Chat Website den gesammten code vom CDN Server von Converse js, bei jedem Besuch der Seiter neu herrunter. Dies soll umgestellt werden. Dazu soll das Script Local von userem Server bereitgestellt werden und durch Nixos regelmäßig(1/2 anno) aktualisiert werden.


Dateien

clipboard-202412102143-exi2q.png (1,1 MB) clipboard-202412102143-exi2q.png GoeranHeinemann, 10.12.2024 20:44

Zugehörige Tickets 1 (1 offen0 geschlossen)

Nachfolger von Bereich Administration Rechentechnik - Aufgabe #1994: Hosten eines WebUI für den Candychat unter verwendung eines NixOS Containers und Converse.FeedbackPaulRiegel13.09.2024

Aktionen
Aktionen #1

Von JohannFinsterbusch vor 3 Monaten aktualisiert

  • Übergeordnetes Ticket #1994 wurde gelöscht
Aktionen #2

Von JohannFinsterbusch vor 3 Monaten aktualisiert

  • Abgabedatum wurde auf 14.09.2024 gesetzt
  • Beginn wurde von 13.09.2024 zu 14.09.2024 geändert
  • Nachfolger von Aufgabe #1994: Hosten eines WebUI für den Candychat unter verwendung eines NixOS Containers und Converse. wurde hinzugefügt
Aktionen #3

Von MathisBluemel vor 3 Monaten aktualisiert

  • % erledigt wurde von 0 zu 100 geändert

Ich habe die HTML so umgeschrieben das sie nach den 2 JS und einer CSS Datei im Webroot schaut.
Dazu habe ich die configuration.nix umgeschrieben und einen cron Job hinzugefügt welcher ein Skript:

#!/bin/sh
curl  https://cdn.conversejs.org/dist/converse.min.css > /var/www/converse.min.css
curl  https://cdn.conversejs.org/dist/converse.min.js > /var/www/converse.min.js
curl  https://cdn.conversejs.org/3rdparty/libsignal-protocol.min.js > /var/www/libsignal-protocol.min.js

jeden Monat ausführt.

Hier nochmal die configuration.nix:

###########################################################################
#
#       BOF - Begin of File
#
###########################################################################

###########################################################################
#
#       Liste aller am  ursprünglichen Dokument beteiligter Autorinnen
#       List of 
#       @author admin@ --> Abgesprochene zusammenfuehrung von Kommentaren
#       @author resi@
#       @author mlp@
#       @author vat@
#       @author offbyone@
#
###########################################################################
#       Autor der  überarbeiteten  Version
#       @author johann@
###########################################################################
#
#       Liste verwendeter Abkuerzungen im Dokument
#       
#       PVE             - Proxmox Virtual Enviroment - 
#       Link: https://en.wikipedia.org/wiki/Proxmox_Virtual_Environment
#
#       LXC             - Linux Container
#       Link: https://en.wikipedia.org/wiki/LXC | https://linuxcontainers.org/lxc/
#
#       CT              - Container
#       ID              - Identity Document
#
#       DHCP            - Dynamic Host Configuration Protocol
#       Link: https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
#       
#       TCP & UDP       - Transmission Control Protocol & User Datagram Protocol
#       Link: https://en.wikipedia.org/wiki/Transmission_Control_Protocol & https://en.wikipedia.org/wiki/User_Datagram_Protocol
#       
#       HTW     - Hochschule fuer Technik und Wirtschaft Dresden
#       Link: https://www.htw-dresden.de/       
#
#       NGINX           - "engine X" Webserver 
#       Link: https://en.wikipedia.org/wiki/Nginx | https://nginx.org/
#       
#
###########################################################################

{ config, pkgs, ... }:

{

  imports = [ 

    <nixpkgs/nixos/modules/virtualisation/proxmox-lxc.nix>
  ];

###############################
###     NixOS
##############################

system.stateVersion = "24.05";
system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = true;
nix.settings.auto-optimise-store = true;
nix.optimise.automatic = true;
nix.gc.automatic = true;
nix.gc.options = "--delete-older-than 5d";

############################
####    System
############################

  proxmoxLXC.manageHostName = true;

  networking.hostName = "www";
  networking.domain = "chat.stura.htw-dresden.de";

  time.timeZone = "Europe/Berlin";

  # NGINX Webserver
  services.nginx.enable = true;

  services.nginx.virtualHosts."${config.networking.fqdn}" = {
    forceSSL = true;
    enableACME = true;
    root = "/var/www/";
  };

  services.nginx.logError = ''/var/log/nginx/error.log debug''; 

  security.acme.defaults.email = "cert@stura.htw-dresden.de";
  security.acme.acceptTerms = true;
### Enable cron service für Autoupdate von Converse
  services.cron = {
    enable = true;
    systemCronJobs = [
      "5 4 1 * *      root    /var/update-converse.sh" 
    ];
  };

###############################################################
#
#       SSH Verbindungen zu  diesem Container sollen prinzipiell nicht moeglich sein. 
#       NixOS Container = Server        -       SSH Verbindung = Client
#       
#       Allgemein soll das Anmelden auf einen NixOS Container ueber "pct  enter <ct_id>" erfolgen.
#       Es ist demnach nicht notwendig SSH als Server fuer den Nixcontainer zu aktivieren.
#       services.openssh.enable = false; 
#       Grund: Wird von Proxmoy auf true gesetzt.

###############################################################

       services.openssh.enable = false;

############################
####    Netzwerk
############################

###############################################################
#
#       Network Cofigruation - nur IPv4 
#       Zur nicht dynamischen Bereitstellung eignet sich DHCP nicht wirklich
# 
###############################################################

  networking.useDHCP = false;
  networking.enableIPv6 = false;

############################################################### 
#
#       Firewall Configuration
#       Standardmaessig ist die Firewall bei NixOS an. Wir spezifizieren erlaubte TCP Ports.
#       
##############################################################

  networking.firewall.allowedTCPPorts = [ 80 443 ];

}
##################################################################
#
#       EOF - End of File
#
##################################################################

Aktionen #4

Von MathisBluemel vor 3 Monaten aktualisiert

  • Status wurde von Neu zu Feedback geändert
Aktionen #5

Von GoeranHeinemann vor 11 Tagen aktualisiert · Edited

Sorry, dass ich dieses Ticket jetzt erst sehe, ich war gerade auch in dem Container und wollte mir das anschauen, aber da läuft schon was anderes, also nur so noch als Bemerkung:

Das shell Script unter /var/ ist ein wenig unschön, es empfielt sich wenigstens folgendes:

let script = pkgs.writeShellSctiptBin "scriptname.sh" ''
#!/bin/sh
curl  https://cdn.conversejs.org/dist/converse.min.css > /var/www/converse.min.css
curl  https://cdn.conversejs.org/dist/converse.min.js > /var/www/converse.min.js
curl  https://cdn.conversejs.org/3rdparty/libsignal-protocol.min.js > /var/www/libsignal-protocol.min.js
''

Dadurch landet dieses sKript auch reproduzirbar im NixStore und könnte z.B. als package im system installiert werden.

besser wäre es allerdings einen Systemd Timer zu definieren. Diese funktionieren sehr ähnlich zu Cronjobs.
https://nixos.wiki/wiki/Systemd/Timers

Mit dem folgenden Script könnte man z.B. monatlich nach neuen Librarys schauen:

systemd.timers."cdn-update" = {
  wantedBy = [ "timers.target" ];
    timerConfig = {
      OnCalendar = "weekly";
      Unit = "script-update.service";
    };
};

systemd.services."script-update" = {
  script = ''
    set -eu
    ${pkgs.curl.outPath}/bin/curl https://cdn.conversejs.org/dist/converse.min.css > /var/www/converse.min.css
    ${pkgs.curl.outPath}/bin/curl https://cdn.conversejs.org/dist/converse.min.js > /var/www/converse.min.js
    ${pkgs.curl.outPath}/bin/curl https://cdn.conversejs.org/3rdparty/libsignal-protocol.min.js > /var/www/libsignal-protocol.min.js
  '';
  serviceConfig = {
    Type = "oneshot";
    User = "nginx";
  };
};


Frei nach dem Meme könnte man das aus Meiner Sicht nur noch verbessern, indem Man die drei javascript Dateien in den NixStore Läd, z.B. mit builtins.fetchurl, oder eben den build davon paketiert.
Beides potenziell wesentlich lästiger.

Aktionen

Auch abrufbar als: Atom PDF