Gogs hinter einem Reverse Proxy betreiben

Gogs ist ein Git-Service welcher eine ähnliche Funktionalität wie der bekannte Dienst GitHub zur Verfügung stellt. Standardmäßig läuft der Dienst auf dem Port 3000. Möchte man ihn über die normalen Ports für HTTP (80) bzw. HTTPS (443) erreichbar machen, kann man hierfür einen Reverse Proxy nutzen. Dafür eignen würde sich zum Beispiel Nginx, der im ersten Schritt auf dem Server installiert werden muss:

apt-get install nginx

Anschließend wird die Konfiguration angelegt:

nano /etc/nginx/sites-available/example

In diesem Fall befasst sich die Konfiguration mit der verschlüsselten Kommunikation per HTTPS und der Weiterleitung von unverschlüsselten Verbindung in Richtung der verschlüsselten Verbindung.

server {
        listen 80;
        listen [::]:80;

        server_name example.com;

        return 301 https://$host$request_uri$is_args$args;
}

server {
    listen 443;
    listen [::]:443 default_server;

    ssl on;
    ssl_certificate        /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key    /etc/letsencrypt/live/example.com/privkey.pem;

    server_name example.com;

    client_max_body_size 500m;

    location / {
        proxy_pass https://localhost:3000;
    }
}

Nachdem die Konfiguration für Nginx hinterlegt ist, wird die Standardkonfiguration entfernt und ein symbolischer Link für die neue Konfiguration erstellt. Anschließend wird Nginx neugestartet, damit die geänderte Konfiguration wirksam wird:

rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example
service nginx restart

Nach der Anpassung der Nginx-Konfiguration, muss die app.ini (sie befindet sich im gogs/custom/conf/ Ordner) von Gogs angepasst werden und dort die neue ROOT_URL ohne zusätzlichen Port angegeben werden. Anschließend kann auf Wunsch, per Firewall, der Port 3000 für Zugriffe von außen gesperrt werden.

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://seeseekey.net/archive/118039

Zwischenablage aus einer Webanwendung heraus nutzen

Wer aus einer Webanwendung heraus etwas in die Zwischenablage kopieren möchte, der benötigte bis vor einiger Zeit dazu ein Schnipsel Flash. Mittlerweile lässt sich dies, ohne zusätzliche Plugins, in den meisten Browsern über eine entsprechende Web Api nutzen.

clipboardjs.com

Einfacher wird die Nutzung dieser Web Api mit der JavaScript-Bibliothek clipboard.js. Die Bibliothek welche sich seit September 2015 in der Entwicklung befindet, abstrahiert die Nutzung der entsprechenden Web Api. Damit wird es möglich, mit wenigen Zeilen, die Zwischenablage in einer Webanwendung zu nutzen. Der Quelltext der Bibliothek ist auf GitHub zu finden. Sie ist unter der MIT Lizenz lizenziert und damit freie Software.

Raspberry Pi Firmware aktualisieren

Vor einiger Zeit schrieb ich einen Artikel in welchem ich beschrieb wie die Firmware des Raspberry Pi aktualisiert werden kann. Mittlerweile lässt sich das ganze noch einen Schritt einfacher bewerkstelligen. Im ersten Schritt muss rpi-update installiert werden:

sudo apt-get install rpi-update

Anschließend kann der Updater mittels:

sudo rpi-update

aufgerufen werden. Neben diesem Aufruf existieren eine Reihe weiterer Optionen mit denen sich der Aktualisierungsprozess noch besser steuern lässt. Im Normalfall werden diese allerdings nicht benötigt. Nach dem Backup der alten Firmware und vor dem eigentlichen Update erscheint in der aktuellen Version eine Sicherheitsabfrage:

#############################################################
WARNING: This update bumps to rpi-4.9.y linux tree
Be aware there could be compatibility issues with some drivers
Discussion here:
https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=167934
##############################################################
Would you like to proceed? (y/N)

Wenn man keine spezielle Hardware (der Beitrag im Forum behandelt eventuelle Probleme) betreibt, kann man das ganze mit einem Druck auf die y-Taste bestätigen. Anschließend wird das Firmware-Update durchgeführt. Dabei werden die Firmware, Kernel Module, das SDK, einige Bibliotheken wie z.B. die VideoCore und HardFP-Bibliotheken und weitere Komponenten aktualisiert. Wenn die Aktualisierung fehlerfrei durchlief, sollte der Raspberry Pi mittels:

sudo reboot

neugestartet werden. Das Projekt des Updaters kann auf GitHub gefunden werden. Der Updater ist unter der MIT Lizenz lizenziert und freie Software. Technisch handelt es sich bei dem rpi-update-Tool um ein Bash-Skript. Es befindet sich seit April 2012 in aktiver Entwicklung, so das man auch in Zukunft auf dieses Tool bauen kann.

sprintf Implementation für JavaScript

Für ein kleines Projekt an dem ich zur Zeit arbeite war ich mal wieder auf der Suche nach einer sprintf Implementation für JavaScript. Und wieder wurde ich bei der gleichen Implementation – wenn auch erheblich weiterentwickelt – fündig. Seit 2007 arbeitet Alexandru Marasteanu an seiner Implementation der sprintf Funktion für JavaScript. Mit der Hilfe dieses Funktion wird so sprintf-like aus einem:

sprintf("%2$s %3$s a %1$s", "cracker", "Polly", "wants")

ein:

Polly wants a cracker

Der Quelltext ist auf GitHub zu finden. Die Implementation ist freie Software und unter der 3-Klausel-BSD-Lizenz lizenziert.

Quellcode durchsuchen

Manchmal ist man als Entwickler auf der Suche nach einem Stück Quellcode. Die Gründe dafür sind vielfältig und natürlich kann man für diesen Zweck die Suchfunktionen einzelner Portale wie GitHub und Co. nutzen um den gewünschten Quelltext zu finden.

searchcode in Aktion

Einfacher wird das ganze mittels searchcode.com, einer Quelltextsuchmaschine. Bei searchcode, werden nach eigenen Angaben, über sieben Millionen Projekte verschiedenster Plattformen durchsucht. Für den Gebrauch in Firmen, welche natürlich auch private Repositories betreiben, gibt es searchcode dabei auch als Lösung zum selberhosten. Der Quelltext von searchcode ist auf GitHub zu finden. Zu beachten ist hierbei, das es sich um keine freie Software handelt und man damit die Lizenzbedingungen bei der Eigennutzung des Servers genau lesen sollte.