Menu

Gogs auf Uberspace installieren

Gogs oder "Go Git Service" ist eine in der Programmiersprache Go geschriebene Webanwendung für git ähnlich GitHub oder GitLab. Gogs ist eine reine self-hosted Lösung und muss auf dem eigene Server installiert werden. Das Projekt hat mit der Version 0.8 den Beta-Status verlassen. Auch wenn es hier und da noch kleinere Bugs gibt, lässt sich Gogs sehr gut im Entwickler-Alltag einsetzten. Im Vergleich zu GitLab ist Gogs deutlich einfacher zu installieren und sehr ressourcenschonend.

Aufmerksam geworden bin ich auf Gogs durch einen Beitrag auf seeseekey.net. Da ich mit GitLab nicht so ganz glücklich war habe ich kurzerhand Gogs installier. Legen wir los.

Update 14. Mai 2017: Ich bin mittlerweile zu dem Fork gitea gewechselt. Mehr Informationen gibt es in diesem Beitrag.
Update 18. Februar 2016: Hinweise für SSH ergänzt - Danke Clemens.
Update 11. Dezember 2015: Gogs entwickelt sich verdammt schnell weiter. In der aktuellen Version 0.7.42 gibt es nun auch eine Wiki Funktion, die Oberfläche wurde überarbeitet und Bugs beseitigt. Außerdem ist die Repository-Ansicht informativer geworden (Changelog). Ich bin gespannt, was bis zur ersten stabilen Version noch kommt.
Update 09. November 2015: Updateanweisung für Gogs hinzugefügt
Update 05. November 2015: Aktualisieren der Git Version hinzugefügt
Update 05. November 2015: Go manuell installieren nicht mehr notwendig

Go installieren

Dieser Schritt ist bis auf weiteres nicht mehr notwendig. Uberspace stellt bereits für alle User die aktuelle Version 1.5.1 bereit. Ihr könnt also direkt mit Git installieren weiter machen.

Uberspace stellt bereits für alle eine Version von Go bereit, ich hatte mit dieser Version aber Probleme bei den Abhängigkeiten einiger Pakte die Gogs benötigt. Also installieren wir uns die aktuelle Version lokal in unserem Uberspace.

  1. wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
  2. tar -C ~/bin/ -xzf go1.5.1.linux-amd64.tar.gz
  3. mkdir -p ~/src/go ~/bin/go

Anschließend muss noch die Datei .bash_profile angepasst werden.

  1. echo "export PATH=~/bin/go/bin:$PATH" >> ~/.bash_profile
  2. echo "export GOROOT=~/bin/go" >> ~/.bash_profile
  3. echo "export GOPATH=~/src/go" >> ~/.bash_profile

Damit die Änderung wirksam wird müsst ihr euch neu anmelden oder

  1. . ~/.bash_profile

ausführen.

Git installieren

Björn Fromme hat in einem Kommentar darauf hin gewiesen, dass die Git Version auf Uberspace zu alt ist (1.7.1). Glücklicher weise kann man mit toast sehr einfach eine neuere Version installieren. Sucht euch hier den gewünschten Tarball raus.

  1. # Git Version 2.6.2
  2. toast arm https://www.kernel.org/pub/software/scm/git/git-2.6.2.tar.gz

Auch hier solltet ihr ein wenig Geduld mitbringen, die Installation kann einen Moment dauern.

Gogs instalieren

Die installation von Gogs ist relativ schnell erledigt.

  1. # Abhängigkeiten herunterladen und installieren
  2. go get -u github.com/gogits/gogs
  3. # Gogs bauen
  4. cd $GOPATH/src/github.com/gogits/gogs
  5. go build

Was wir jetzt noch brauchen, ist ein freier Port. Uberspace weist in seinem Wiki darauf hin, dass ausschließlich Ports zwischen 61000 und 65535 zu benutzen sind! Mit dem Befehl netstat -tulpen | grep PORTNUMMER könnt ihr den gewünschten Port überprüfen. Wird euch kein Ergebnis zurückgeliefert, ist der Port noch frei.

Domain vorbereiten

Legt euch wie gewohnt mit dem Befehl uberspace-add-domain -d sub.yourdomain.tld -w eine Subdomain an über die Gogs erreichbar sein soll. Da Gogs auf localhost:PORTNUMMER läuft, muss mittels .htaccess noch eine Weiterleitung eingerichte werden die wiefolgt aussehen kann. Diese Weiterleitung leitet zusätzlich noch alle anfragen automatissch von HTTP auf HTTPS um. Ich empfehle Gogs ausschließlich über HTTPS zu betreiben.

  1. RewriteEngine On
  2. RewriteCond %{HTTPS} !=on
  3. RewriteCond %{ENV:HTTPS} !=on
  4. RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
  5. RewriteRule (.*) http://localhost:PORTNUMMER/$1 [P]

Gogs konfigurieren

Jetzt können wir Gogs das erste mal starten und über die Weboberfläche einrichten.

  1. $GOPATH/src/github.com/gogits/gogs/gogs web -port PORTNUMMER

Wichtig sind beim Installer folgende Punkte:
Run User → Uberspace User
Domain → sub.yourdomain.tld
HTTP Port → PORTNUMMER
Application URL → https://sub.yourdomain.tld

Die Datenbankeinstellungen könnt ihr nach belieben vornehmen. Den E-Mail Services habe ich vorerst nicht eingerichtet.

Damit ist die Einrichtung abgeschlossen und Gogs prinzipiell einsatzbereit. Wir benötigen aber noch einen Service (daemontools) damit Gogs automatisch gestartet wird.

  1. uberspace-setup-service gogs ~/src/go/src/github.com/gogits/gogs/gogs web
  2. # gogs starten
  3. svc -u ~/service/gogs
  4. # gogs beenden
  5. svc -d ~/service/gogs

Wenn ihr nachträglich was an eurer Konfiguration verändern wollt, findet ihr diese unter ~/src/go/src/github.com/gogits/gogs/custom/conf/app.ini.

Damit sind wir am Ende angelangt und Gogs vollständig eingerichtet. Zum Abschluss noch ein Hinweis: Uberspace verwendet 4096 bit DH Parameter. Das ist für die Sicherheit sehr gut nur leider ist Java nicht in der Lage damit umzugehen. Benutzt ihr also zum Beispiel Netbeans oder Eclipse, könnt ihr git über HTTPS nicht benutzen und müsst auf git über SSH ausweichen.

Optional: Git over SSH einrichten

Der Nachteil beim Arbeiten mit Git über HTTP ist, dass bei jeder Aktion der Benutzername und das Passwort eingegeben werden muss. Alternativ kann man git aber auch über SSH benutzen und statt Benutzername und Kennwort einen RSA Schlüssel benutzen. Dazu erzeugt ihr auf eurem Client ein neues Schlüsselpaar, das geht unter Linux mit ssh-keygen. Achtung: Den SSH Key den ihr für die Anmeldung bei Uberspace nutzt funktioniert nicht, ihr benötigt für Gogs ein separates Schlüsselpaar!

  1. # -t legt den Typ fest
  2. # -b legt die Bitlänge fest
  3. ssh-keygen -t rsa -b 4096

Der Befehl erzeugt im Verzeichnis ~/.ssh einen privaten und einenen öffentlichen Schlüssel. Der private Schlüssel verbleibt auf dem Client, den Inhalt des öffentlichen Schlüssels müssen wir noch in Gogs eintragen. Die Einstellung dafür findet iht unter https://your-domain/user/settings/ssh. Gogs trägt den Schlüssel beim Speichern automatisch in die Datei ~/.ssh/authorized_keys ein. Zusätzlich wird der Schlüssel auf die Benutzung mit git beschränkt.

Gogs aktualisieren

Auch die Aktualisierung von Gogs ist unkompliziert und mit wenigen Handgriffen erledigt. Zuerst werden wie bei der Erstinstallation die Abhängigkeiten heruntergeladen und Gogs gebaut. Nach einem Neustart des Service steht Gogs in der neuen Version bereit.

  1. # Gogs beenden...
  2. svc -d ~/service/gogs
  3. # Abhängigkeiten werden heruntergeladen und installiert...
  4. go get -u github.com/gogits/gogs
  5. # Gogs bauen...
  6. cd $GOPATH/src/github.com/gogits/gogs
  7. go build
  8. # Gogs starten...
  9. svc -u ~/service/gogs

Euch hat der Beitrag gefallen, ihr habt Fragen oder Anregungen? Hinterlasst mir einen Kommentar oder diskutiert im OSBN-Chat.

Kommentare

Linear Verschachtelt
lynx

lynx

Vielen Dank für die Anleitung!
Es hat wunderbar geklappt :-)

Ich war mit meinen Projekten bisher bei bitbucket. Ich habe auch schon mal ohne Erfolg versucht gitlab auf meinem uberspace zum Laufen zu bekommen.
Gogs ist super, der Funktionsumfang reicht für meine Projekte völlig aus.

Robert Kaussow

Hi,
freut mich das alles geklappt hat :-) Absolut, für mich sind die Funktionen auch komplett ausreichend. Vor allem finde ich Gogs verdammt performant. Wenn man sich das Porojekt bei GitHub mal anschaut, denke ich auch da wird noch einiges an Funktionen kommen.

Markus

Markus

Hmm… bei mir hängt's beim Befehl go get -u github.com/gogits/gogs. Der Befehl wird ausgeführt, es gibt keine Fehlermeldung, aber es folgt nur ein blinkender Cursor — kein neuer Prompt, keine Nachrichten. Hab's mal gut 30 Minuten so laufen lassen, passiert aber auch nix weiter ;-)

Robert Kaussow

Hi,
ich habs gerade nochmal getestet, der Befehl funktioniert also ein Tippfehler ist definitv nicht drin. Das erstmal keine Rückmeldung kommt ist normal, nach schätzungsweise 5 min sollte die Sache aber durch sein und du wieder vor dem normalen Eingabepromt stehen... Was gibt denn go version bei dir aus?

Markus

Markus

Go sagt go version go1.5.1 linux/amd64, sollte doch passen? Mein $PATH scheint mir auch ausreichend: ~/bin:~/.local/bin:~/bin/go/bin:…; ein which go spuckt ~/bin/go/bin/go aus, lokale Version ist also am Start. Die Umgebungsvariablen $GOROOT (~/bin/go) und $GOPATH (~/source/go) sind auch gesetzt — ich habe einen anderen $GOPATH genommen, da es sich besser in meine schon vorhandenen Verzeichnisse einpasst, das sollte ja aber kein Ding sein.

Naja, ich hab's gerade noch mal an geschmissen, mal schauen, was passiert, wenn ich lange genug warte…

Robert Kaussow

Ja das sollte eigentlich alles passen. Ich bin ehrlich gesagt etwas ratlos :-) hattest du denn mittlerweile Erfolg?

Markus

Markus

Nach dem Update der GIT Version klappt's nun auch bei mir. Danke für den Artikel, sehr praktisch das.

rsn

rsn

Vielen Dank für die detaillierte Anleitung.

Leider hängt der Befehl 'go get -u github.com/gogits/gogs' bei mir auf einem uberspace nun auch schon übers ganze Wochenende. Bis dahin bin ich dieser Anleitung exakt gefolgt.
Ale einzige Auswirkung kann ich erkennen, dass sich nun unter ~/src/go/src die Verzeichnisse github.com und gopkg.in befinden. Wobei github.com wiederum codegangsta, gogits, go-macaron und Unknwon enthält und gopkg.in nichts.

Über ein Tipp würde ich mich sehr freuen.

Robert Kaussow

Hi, tut mir leid das du Probleme mit der Installation hast. Leider bin ich da auch etwas überfragt. Ich habe die Anleitung gerade nochmal geprüft und konnte keinen Fehler feststellen, auf meinem Uberspace läuft alles wie beschrieben ich kann das Problem nicht nachstelllen. Eventuell mal beim Support von Uberspace anfrage? Vielleicht haben die Jungs ja eine Idee. Sorry dass ich nicht weiter helfen kann. Wenn du was raus gefunden hast wäre ich aber auch an der Lösung interessiert, dann kann ich das eventuell in den Beitrag mit aufnehmen.

Björn Fromme

Björn Fromme

Hi,

ich bin an der gleichen Stelle hängengeblieben. Die global installierte Git Version ist zu alt (1.7.1). Nachdem ich sie mit toast aktualisiert hatte, wuppte es. Danke für die Anleitung übrigens!

Grüße Björn

Robert Kaussow

Hi, danke für den Hinweis. Gut zu wissen dass auch die Git Version relevant ist. Ich werden die Information zusätzlich im Beitrag hinterlegen.
Viele Grüße

rsn

rsn

Ich kann bestätigen, dass die neuere git Version der entscheidende Schritt war. Das systemweite go ist okay. Jetzt funktioniert alles wunderbar.

Robert Kaussow

Hi,
freut mich dass jetzt alles funktioniert :-) Ich hab den entsprechenden Schritt im Blogbeitrag hinzugefügt. Vielen Dank nochmal an Björn für den Hinweis.

Clemens Krack

Clemens Krack

Danke für die Anleitung!

Wenn ich ein Repo anlege und es clonen möchte, meldet mir git jedoch, dass dies kein gültiges Repo sei.

Ich habe den Host auf sub.domain.com gesetzt und ebenfalls die Webserver Einstellungen durchlaufen.
Über die URL ist Gogs auch aufrufbar, nur über git/ssh gibt es Probleme.

Robert Kaussow

Hi Clemens,
auf das Problem mit ssh bin ich auch gestoßen. Mit welcher Clientanwendung hast du es denn probiert? Das Problem ist, dass Uberspace auf seinen Servern einen Diffie Hellmann Parameter mit 4096 bit einsetzt. Java kann aber selbst in der aktuellsten Version nur mit DH Parametern bis 2048 bit umgehen. Bei allen javabasierten Programmen, wie zum Beispiel Eclipse, bleibt dir nichts anderes über als git über http (im besten Fall https) zu nutzen. Das clonen von Repos mit ssh sollte aber über die Konsole einwandfrei funktionieren. Wenn nicht sag nochmal bescheid, dann klemmt es noch an einer anderen Stelle :-)

Ich hab gerade gesehen, ich habs im Beitrag genau falsch rum geschrieben, ist jetzt aber korrigiert und steht im letzten Absatz vor dem Punkt Gogs aktualisieren.

Viele Grüße

Karsten

Karsten

Hi,

Danke für die Anleitung. Gogs läuft. Repos liegen unter ~/gogs-repository. Aber wenn ich was pushe, tauchen die files nicht in gogs auf.

Ich habe in gogs ein neues repo angelegt. Dann "git clone ich@hamal.uberspace.de:gogs-repositories/ich/bin.git". Dann "touch newfile; git add newfile; git commit -a -m 1st; git push".

In Gogs ist "newfile" nicht zu sehen, aber wenn ich das repo nochmal clone, ist die Datei da...

Ich wette ich muss anders clonen..., richtig?

K

Robert Kaussow

Hi Karsten,
ich konnte auf den ersten Blick keinen grundlegenden Fehler an deiner Vorgehensweise erkennen. Auch in einem Test mit exakt den selben Befehlen konnte ich das Problem nicht reproduzieren. Nach dem pushen ist newfile im Webinterface von Gogs zu sehen. Die Seite muss im Browser natürlich aufgefrischt werden aber ich gehe mal stark davon aus, das hast du gemacht. Ich hab das ganze allerdings über https mit einem privaten Repository probiert. Ich werde meine Gogs installation aber mal updaten und den Test per SSH wiederholen.

Robert Kaussow

Hi,
also ich kann das beschrieben Verhalten nicht nachstellen. Aktuelle Gogs Version 0.8.25.0129 und clone über SSH. Neu erzeugtes File erscheint nach dem pushen im Repository in der Weboberfläche...

Edit: Eine Sache ist mir doch noch aufgefallen. Deine URL zum clonen sieht komisch aus ich@hamal.uberspace.de:gogs-repositories/ich/bin.git Wozu hast du gogs-repositories mit angegeben? Richtig ist eigentlich ich@hamal.uberspace.de:ich/bin.git da Gogs bereits weiß, dass alle Benutzerverzeichnisse unter ~/gogs-repositories liegen. Die korrekten Links für den Zugriff werden aber auch im Webinterface pro Repository angezeit und können dort direkt kopiert werden.

Anonym

Das ist wirklich seltsam. Auch wenn ich ein repo lokal anlege und dann zu uberspace pushen will, kriege ich es nicht hin:

ich@lenny:~/tmp mkdir bin
ich@lenny:~/tmp cd bin
ich@lenny:~/tmp/bin touch README.md
ich@lenny:~/tmp/bin git init
Initialisierte leeres Git-Repository in /home/ich/tmp/bin/.git/
ich@lenny:~/tmp/bin:master git add README.md
ich@lenny:~/tmp/bin:master git commit -m "first commit"
[master (Basis-Commit) 69a1c6e] first commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
ich@lenny:~/tmp/bin:master gst
Auf Branch master
nichts zu committen, Arbeitsverzeichnis unverändert
ich@lenny:~/tmp/bin:master git remote add origin ich@gogs.meinserver.de:ich/bin.git
ich@lenny:~/tmp/bin:master git push -u origin master
fatal: 'ich/bin.git' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
ich@lenny:~/tmp/bin:master

Robert Kaussow

Das ist so ins blauen hinein echt schwierig... Kannst du mir einen Testuser auf deinem Git-Server anlegen? Dann kann ich mir das mal anschauen wenn du magst.

Karsten

Karsten

PM

Clemens Krack

Clemens Krack

Die Lösung für die Authentifizierungsprobleme über SSH ist, einen neuen SSH Key nur für Gogs zu verwenden.

Man kann nicht den gleichen SSH Key für den Login zum Uberspace und Gogs benutzen, denn dann klappt entweder der SSH Login oder die Zuordnung zu eurem Gogs-User nicht.

Also generiert euch wie hier beschrieben einen neuen SSH Key (z.B: gogsidrsa als Name verwenden).
https://wiki.uberspace.de/system:ssh

Den tragt ihr dann bei Gogs ein.

https://github.com/gogits/gogs/issues/1306

Beim löschen meines alten Keys aus der Benutzerkonfguration in Gogs hat es mir die .ssh/authorized_keys überschrieben.
Dort steht aber ein Key von Uberspace drin, der nicht gelöscht werden soll.
Hierfür existiert seitens Uberspace zwar eine Backup-Lösung, aber macht euch nicht unbeliebt und setzt den lieber manuell wieder rein.

Robert Kaussow

Hi Clemens,
vielen Dank für den Hinweis. Absolut richtig, für SSH wird ein separater Key benötigt der nicht für den Login verwendet werden darf. Da ich das von GitLab schon so gewohnt war, habe ich der Tatsache gar keine Aufmerksamkeit geschenkt :-) Ich werden den Hinweis für alle anderen noch im Artikel ergänzen.

Danke nochmal

Anonym

War erst etwas verwirrt, da ich dachte Clemens Tipps wären schon in den Artikel aufgenommen. Hab dann gemerkt, dass es noch nicht erfolgt ist und hab mich an Clemens Erläuterung gehalten.

Robert Kaussow

Hi,
natürlich habe ich Clemens Hinweise bereits ergänzt. Siehe Punkt "Optional: Git over SSH einrichten" :-) oder was meinst du?

Anonym

jain,
es fehlt definitiv der Hinweis, dass man gogs nicht mit dem selben SSH-Schlüssel verwenden kann, mit dem man sich bei uberspace einloggt (wenn man einen SSH Schlüssel bei uberspace hinterlegt hat), da immer der erste Treffer aus authorized_keys verwendet wird und dann ggf die gogs spezifischen Ergänzungen/Beschränkungen fehlen.
Um einen neuen, zusätzlichen Schlüssel zu erzeugen, sollte der Aufruf vermutlich irgendwie so aussehen
ssh-keygen -t rsa -b 4096 -f ~/.ssh/
Der Inhalt von .pub muss dann an gogs übergeben werden.

Siehe dazu auch hier

Robert Kaussow

Da hast du recht, der Hinweis fehlt. Ich habs ergänzt, danke.

tiger

tiger

Vielen herzlichen Dank für die Anleitung!

Ich habe zwei Probleme:

a) irgendwie klappt die URL-Anlage nicht. Ich habe eingegeben: "subdomain.domain.de" --> uberspace-add-domain -d subdomain.domain.de -w, habe dann das Verzeichnis: var/www/virtual/username/subdomain.domain.de angelegt, da die .htaccess rein. Klappt aus irgendeinem Grund nicht, wäre aber ja nicht so tragisch, denn: Wenn ich es richtig verstanden habe, sollte ich ja auch über den Port drankommen.

username.server.uberspace.de:61001 (hatte ich genommen weil nichts drauf. Da bin ich bei Problem b)
username.server.uberspace.de:61001 funktioniert für ein paar Minuten, danach verschwindet es einfach auf dem Uberspace. Der Dienst ist weg, der Port auf liefert auf: "netstat -tulpen | grep 61001" auch nichts mehr. Der Aufruf im Browser ("username.server.uberspace.de:61001") liefert nur noch eine "Seiten-Ladefehler" zurück. Was habe ich falsch gemacht?

BG
tiger

Robert Kaussow

Hi tiger,
freut mich wenn dir der Beitrag gefallen hat.

Zu a) Also das sieht auf die schnelle eigentlich gut aus, wenn du den Ordner direkt unter /var/www/virtual/USER angelegt hast sollte das eigentlich passen. Wie genau sieht denn die Fehlermeldung im Browser aus? Wenn du den Fehler 503: Service Temporarily Unavailable bekommst funktioniert der Aufruf grundsätzlich, das bedeute nur dass gogs nicht erreicht wurde.

Zu b) Der Port den du dir ausgesucht hast ist standardmäßig erstmal nicht von außen erreichbar da der Port in der Firewall nicht freigegeben ist. Aus diesem Grund kann es eigentlich nicht sein, dass du gogs über username.server.uberspace.de:61001 im Browser erreichst, oder hast du den Port in der Firewall freigegeben? Ich persönlich würde auch davon abraten den Buildin-Webserver von go direkt nach außen zu öffnen. Die sichere Variante ist die von mir beschriebene über den Apache als Proxy. Hast du einfach mal einen anderen freien Port probiert? Über welchen Befehl hast du gogs gestartet?

Katha

Katha

Mmh, hat jemand von Euch schon eine Lösung zum Klonen via SSH?

Mit folgender URL aus dem Webinterface funktioniert es nicht:
uberspace-user@gogs.own-domain:gogs-user/hello_gogs.git,
allerdings aber mit dieser:
uberspace-user@gogs.own-domain:gogs-repositories/gogs-user/hello_gogs.git``.

Ein extra SSH-Schlüssel wurde für den gogs-user hinterlegt. Dies kannte ich auch schon von GitLab. Ideen, außer den Builtin-SSH-Server auszuprobieren? Dankeschön im Voraus!

P.S.: Gogs habe ich als Binary (gogs_v0.9.13_linux_amd64.tar.gz) installiert.

Robert Kaussow

Hi,
also SSH funktioniert bei mir ohne Probleme. Wenn es mit der URL uberspace-user@gogs.own-domain:gogs-repositories/gogs-user/hello_gogs.git funktioniert überprüfe mal deine Konfigurationsdatei (app.ini). Ich vermute das Root-Verzeichnis für Repositories ist nicht richtig definiert. Das sollte in etwa so ausssehen:
[repository]
ROOT = /home/USER/gogs-repositories
Viele Grüße

Katha

Katha

Hallo, erstmal Danke für die schnelle Antwort! :-)

ROOT für das Repositories-Verzeichnis ist bereits korrekt in der app.ini definiert. Habt ihr irgendwelche Shell-Variablen für Gogs definiert? Ich habe mir nur zum Merken $GOGS_PORT gesetzt.

Habt Ihr alle Gogs aus den Sources installiert? Ich habe es ja als Binary installiert. Das ist ein möglicher Unterschied.

Robert Kaussow

Ich habe keine Umgebungsvariablen für gogs gesetzt. SSH funktioniert ja prinzipiell wenn ich dich richtig verstanden habe, nur nicht über die richtige URL. Die Installationsmethode sollte da eigentlich keine Rolle spielen (eigentlich!) da würde ich mich jetzt aber auch nicht aus dem Fenster lehnen :-) Eventuell hat jemand anderes eine Idee, an sonsten probiere es doch mal direkt über den Entwickler. Halt mich auf dem laufenden, ich bin immer an Lösungen interessiert ;-)

Robert Kaussow

Eins ist mir gerade noch eingefallen. Benutzt du Linux als Client und hast du in der ~/.ssh/config einen Alias für den Server angelegt? Das generelle Pronle ist, dass es für ein deinen Benutzer auf dem Server zwei SSH Keys gibt. Du musst dem Client mitteilen welchen er benutzen soll andernfalls kommt es bei mir auch zu der Fehlerlermeldung "does not appear to be a git repository". Unter linux lässt sich das wie angesprochen über die Datei ~/.ssh/config steuern für Windows weis ich es leider nicht genau. Ich meine das Pageant das kann, bin mir aber nicht sicher.

Katha

Katha

Hallo Robert,

mmh, ich habe es erstmal aufgegeben. Es muss aber an den SSH-Keys liegen. Beim Login wird wohl irgendwie der falsche Schlüssel genutzt. Ich weiss aber nicht warum. Ein Cache-Problem vielleicht? Kannst Du mir ein Beispiel geben für die .ssh/config zur Auswahl des passenden SSH-Keys.

Jetzt läuft der Builtin-SSH-Server von Gogs und es funktioniert. Mit uberspace-add-port habe ich mir einen Port öffnen lassen und jetzt ist halt die Postnummer mit in der SSH-URL. Damit gehe ich auch dem Risiko aus dem Weg meine .ssh/authorized_keys auf dem Uberspace überschreiben zu lassen und dabei die ersten beiden SSH-Keys zu verlieren (Uberspace sowie mein Login).

Robert Kaussow

Hi Katha,
die .ssh/config sollte in etwa so aussehen:

Host uberspace-git
Hostname git.your-domain.com
IdentityFile ~/.ssh/private_key
User username
IdentitiesOnly yes

Host uberspace
Hostname server.uberspace.de
IdentityFile ~/.ssh/private_key
User username

Du kanst dich auch gern nochmal melden wenn es Probleme gibt.

Konstantin

Konstantin

Hallo,

ich habe mit gerade Gogs auf meinem Uberspace installiert und bin begeistert. Leider habe ich das das gleiche Problem, dass Katha vor ein paar Monaten auch hatte. Das klonen via SSH mit der URL aus dem Webinterface funktioniert nicht:

git clone uberspace-user@gogs.own-domain:gogs-user/hellogogs.git
Cloning into 'hello
gogs'...
fatal: 'gogs-user/hellogogs.git' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

Fügt man allerdings ein "gogs-repositories" ein, dann gehts:

git clone uberspace-user@gogs.own-domain:gogs-repositories/gogs-user/hello
gogs.git

SSH scheint ja zu funktionieren; irgendwie läuft es ja – nur nicht so wie es soll. Hat jemand dafür schon eine Lösung gefunden?

Vielen Dank!

Robert Kaussow

Hi,
hast du in deiner app.ini
[repository]
ROOT = /home/USER/gogs-repositories
gesetzt?

tiger

tiger

Und noch einmal ein kleiner Schwung Fehlermeldungen:

[tiger@uberspace ~]$ go get -u github.com/gogits/gogs

cd /home/tiger/src/go/src/github.com/Unknwon/cae; git pull --ff-only

fatal: unable to access 'https://github.com/Unknwon/cae/': Empty reply from server
package github.com/Unknwon/cae/zip: exit status 1
[tiger@uberspace ~]$ go get -u github.com/gogits/gogs

cd /home/tiger/src/go/src/github.com/go-macaron/csrf; git pull --ff-only

fatal: unable to access 'https://github.com/go-macaron/csrf/': Failed connect to github.com:443; Die Operation ist jetzt in Bearbeitung
package github.com/go-macaron/csrf: exit status 1

cd /home/tiger/src/go/src/github.com/go-macaron/gzip; git pull --ff-only

fatal: unable to access 'https://github.com/go-macaron/gzip/': timed out before SSL handshake
package github.com/go-macaron/gzip: exit status 1

cd /home/tiger/src/go/src/github.com/jaytaylor/html2text; git pull --ff-only

fatal: unable to access 'https://github.com/jaytaylor/html2text/': SSL connect error
package github.com/jaytaylor/html2text: exit status 1

cd /home/tiger/src/go/src/github.com/shurcooL/sanitizedanchorname; git pull --ff-only

fatal: unable to access 'https://github.com/shurcooL/sanitizedanchorname/': Empty reply from server
package github.com/shurcooL/sanitizedanchorname: exit status 1

cd /home/tiger/src/go/src/github.com/nfnt/resize; git pull --ff-only

fatal: unable to access 'https://github.com/nfnt/resize/': SSL connect error
package github.com/nfnt/resize: exit status 1

cd /home/tiger/src/go/src/github.com/gogits/cron; git pull --ff-only

fatal: unable to access 'https://github.com/gogits/cron/': SSL connect error
package github.com/gogits/cron: exit status 1


... irgenwie hakt es ;-)

Certain

Certain

Ich versuche gerade, ein Update von gogs durchzuführen:

go get -u github.com/gogits/gogs

Das wird leider quittiert mit:

# cd /home/shodan/gocode/src/github.com/go-xorm/xorm; git pull --ff-only
fatal: Not possible to fast-forward, aborting.
package github.com/go-xorm/xorm: exit status 128

Hat jemand einen Tipp für mich, was ich tun kann?

Robert Kaussow

Hi,
ich hab gogs gerade mal aktualisiert und hatte auch den von dir beschrieben Fehler. Einfache Lösung:

rm -rf /home/shodan/gocode/src/github.com/go-xorm
go get -u github.com/gogits/gogs

Aus irgend einem Grund kann das Paket go-xorm nicht aktualisiert werden. Nach dem Löschen wird das Paket durch go get -u github.com/gogits/gogs automatisch neu herunter geladen. Ich hoffe das hilft.

Certain

Certain

Das hat geklappt! Vielen Dank für die schnelle Hilfe! :-)

Robert Kaussow

Immer gern :-)

Konstantin

Konstantin

Ja, der Eintrag in der app.ini ist korrekt. Wie, gesagt, ich habe ziemlich das identische Problem wie Katha: die hatte ja auch den Eintrag in der app.ini richtig gesetzt.

Ich habe es nun auch schon mit diesem Eintrage in .ssh/config versucht:

Host gogs.own-domain
Hostname gogs.own-domain
IdentityFile ~/.ssh/private_key
IdentitiesOnly yes

Nun werde ich bei "git clone" imemr nach einem Passwort gefragt, obwohl der SSH-Key ohne PW erstellt wurde …

xed

xed

Hallo,

tolles Tutorial zur gogs Installation auf uberspace.de. Ich würde gerne die gogs instanz als Subdomain installieren unter /var/www/virtual/{username}/{subdomain}. Was müsste ich ändern damit diese Instanz dort läuft und somit /home/{username}/html als main website frei bleibt?

Danke schon mal im Voraus für die Hilfe!

LG
Antwort 8. November 2016, 22:31

Robert Kaussow

Hi,

sorry für die späte Antwort. Prinzipiell ist das relativ einfach. Das Tutorial bezieht sich ja bereits auf die Verwendung einer Subdomain. An den Stellen an denen sub.yourdomain.tld verwendet wird setzt du einfach deine Subdomain ein. Da es sich bei gogs um eine Go-Anwendung handelt wird diese auch nicht unter /var/www/virtual/... installiert sondern in deinem Homeverzeichnis unter ~/src/go/src/github.com/gogits/gogs/gogs. Theoretisch kannst du über die Umgebungsbariable GOPATH steuern wo das root-Verzeichnis für Go-Anwendungen liegen soll. Es macht aus meiner Sicht allerdings keinen Sinn dieses Verzeichnis nach /var/www/virtual/... zu legen. Lediglich für die .htacess muss eine gewisse Ordnerstruktur angelegt werden. Das Arbeiten mit Subdomains in unterschiedlichen Odnern wird im Uberspace Wiki ganz gut beschrieben. Die Kurzfassung: Ordner anlegen z. B. /var/www/virtual/USER/html/gogs, Symlink anlegen ln -s /var/www/virtual/USER/html/gogs /var/www/virtual/USER/gogs.domain.tld, .htaccess im Ordner anlegen, fertig :-) Ich hoffe ich konnte helfen. Wenn nicht einfach nochmal melden.

Viele Grüße

Xina

Xina

Absolute Spitze! Danke für das ausführliche Tutorial.

Ich habe lediglich Kleinigkeiten für meine Anwendungszwecke anpassen müssen.
(Nur so nebenbei: Wer ist eigentlich für die absolut absurde Syntax von .htaccess Dateien verantwortlich? Grauenvoll!)

Endlich habe ich ein CMS nach meinem Geschmack für den uberspace gefunden!

Wiki? Jepp.
git? Jepp.
Einfach eine kleine Page mit WYSIWYG Editor erstellen? Jepp.

Ich habe Jahrelang nach etwas ordentlichem gesucht, Wordpress war immer zu überladen, ein Wiki allein zu funktionslos und komplex. Alles dazwischen immer nur so “naja”.

Hiermit habe ich endlich den perfekten Kompromiss gefunden um meine kleinen HowTos und Software mit der Welt fair teilen zu können. (Fair? Ja, fair. Ich finde es besorgniserregend, vor allem nach den ganzen Datenschutzdiskussionen, dass so viele Entwickler einfach alles, inkl. sourcecode, github “schenken”. Danach schaut es von außen betrachtet nun einmal aus.)

Danke nochmal!

Robert Kaussow

Hi,

schön zu hören das dir der Beitrag gefallen hat. Ja der Syntax von .htaccess ist etwas, nennen wir es gewöhnungsbedürftig :-) aber man gewöhnt sich dran.

Angel

Angel

Nochmal, sorry. Die Vorschau hat gesendet O.o

Hey ho!
Erst einmal: "Danke für das spitzen mäßige Tutorial! Hat mir den Hintern gerettet ;)"

Allerdings laufe ich bei der SSH Einrichtung auf ein mächtiges Problem, das mir seit drei Stunden die Nerven raubt!

.ssh/config lokal:

Host gogs
HostName sub.domain.de # domain die unter gogs als domain steht
User uberspace-user-name
IdentityFile ~/.ssh/privatekeygogs
IdentitiesOnly Yes

Host uberspace
HostName host.uberspace.de
IdentityFile ~/.ssh/privatekeyuberspace
User uberspace-user-name

app.ini von gogs auf dem uberspace server:
[repository]
ROOT = /home/USER/gogs-repositories
(das sagt mir zumindest die /admin/config seite auf der gogs webseite)

Ich habe also auf meinem Ubuntu Rechner zu Hause zwei privatekeyfiles, eine für Gogs und eine für uberspace.de. Ich habe eine ssh-config mit Alias eingerichtet (siehe oben).
Über die Shell kann ich sowohl "ssh gogs" aufrufen (dann kommt die Info, das gogs keine Shell anbietet), und ich kann mich per "ssh uberspace" einloggen.
ABER: Wenn ich ein git push mache, kommt immer wieder die Meldung "does not appear to be a git repository".
Beide public Keys sind in Uberspace eingetragen. Den public Key für gogs habe ich über das Gogs Interface eingetragen, wie erfordert. Danach dann den Key für uberspace.
Somit steht in meiner authorized_keys file auf dem uberspace Server zuerst der gogs Key mit allen Gogs angaben, dann der uberspace Key.
Ich verstehe einfach nicht, wo mein Fehler liegt O.o
Kannst Du mir vllt helfen? Liebe Grüße, Angel

Angel

Angel

Erst einmal. Danke! Du hast Dich nicht nur verdammt schnell, sondern auch sehr ausführlich mit meinem Problem auseinander gesetzt. (Per E-Mail, weil viele Daten hin und her gingen).

Und nun die Lösung! So einfach, das es fast weh tut ;-)

Meine .ssh/config Datei hat das Problem verursacht. Und zwar mein Alias (Host)
Vorher stand dort:
Host gogs
HostName sub.domain.de
User uberspace-user-name
IdentityFile ~/.ssh/privatekeygogs
IdentitiesOnly Yes

Host uberspace
HostName host.uberspace.de
IdentityFile ~/.ssh/privatekeyuberspace
User uberspace-user-name

Und so muss sie aussehen:
Host sub.domain.de
HostName sub.domain.de
PreferredAuthentications publickey
IdentityFile ~/.ssh/privatekeygogs
User username-vom-gogs-profil
IdentitiesOnly yes

Host host.uberspace.de
HostName host.uberspace.de
IdentityFile ~/.ssh/privatekeyuberspace
User username-uberspace

Was Robert mir dazu schrieb:
>Das was du unter Host angibst ist eine Art Alias. Das ist ganz nützlich wenn man sich per SSH mit einem Server verbinden will, weil man dann nicht immer den kompletten Hostnamen angeben muss sondern nur den Alias. Da für git aber die URL aus dem Web-Frontend verwendest funktioniert das nur wenn du bei host auch den vollständigen Hostnamen angibst.

Danke!

Nils

Nils

Also erst mal Danke für die Doku.

Leider hänge ich bei dem Punkt:

Gogs konfigurieren
Jetzt können wir Gogs das erste mal starten und über die Weboberfläche einrichten.

$GOPATH/src/github.com/gogits/gogs/gogs web -port PORTNUMMER

Den Port den ich habe ist frei, die subdomain ist eingerichtet aber ich kriege nur ne 403.

Ein Ansatz zur Lösung würde mir schon reichen ..

Robert Kaussow

Hi,

ich bin vor einiger Zeit zu gitea gewechselt und würde mittlerweile auch eher dazu raten als zu gogs. Daher kann ich nicht genau sagen, ob sich bei gogs in letzter Zeit eventuell etwas geändert hat. Ein erster Ansatz wäre in die Logfiles von gogs oder apache zu schauen. Steht da was brauchbares drin?

Viele Grüße

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht veröffentlicht, sondern nur für eventuelle Benachrichtigungen verwendet.
Die Formatierung der Kommentare ist über Markdown möglich.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Gravatar Autoren-Bilder werden unterstützt.
Markdown-Formatierung erlaubt