AmiCloud

Handbuch — eigener Cloud-Speicher für AmigaOS 3.x und PC · Stand 08.11.2026 (Programmversion 0.10)

Dieses Handbuch gehört zu AmiCloud 0.10. Der schnelle Einstieg steht in der Schritt-für-Schritt-Anleitung.

Hinweis: Experimentelle Software, entwickelt mit Hilfe von Claude (KI-Assistent von Anthropic) und in erster Linie für den Eigengebrauch des Autors geschrieben. Bitte zuerst mit Kopien der Daten ausprobieren; Benutzung auf eigene Gefahr.

AmiCloud verbindet den Amiga über HTTPS mit einem eigenen AmiCloud-Server. Die Dateien darauf lassen sich per Kommandozeile, in einer interaktiven Shell, mit einem Dateimanager oder als ganz normales Laufwerk AMICLOUD: benutzen. Kommandozeilenprogramme und Dateimanager gibt es auch für macOS, Linux und Windows. Dieses Handbuch entspricht inhaltlich dem AmigaGuide-Handbuch AmiCloud.guide.

Inhalt

  1. Einführung
  2. Voraussetzungen
  3. Installation mit Install-AmiCloud
  4. Manuelle Installation
  5. AmiCloud auf dem PC
  6. Den Server einrichten
  7. Konfiguration: amicloud.cfg
  8. AmiCloudPrefs
  9. amicloud – Kommandozeilen-Client
  10. amicloud-shell – interaktive Shell
  11. amicloud-sync – Ordner abgleichen
  12. amicloud-commander – Dateimanager
  13. AMICLOUD:-Handler – die Cloud als Laufwerk
  14. Fehlersuche
  15. Deinstallation
  16. Bauen aus den Quellen
  17. API-Kurzreferenz und Sicherheit
  18. Lizenz
  19. Autor und Kontakt
  20. Versionsgeschichte

1. Einführung

AmiCloud ist ein selbst betriebener Cloud-Speicher, der für den Amiga gemacht ist. Ein kleiner PHP-Server auf einem Linux-Rechner hält die Dateien, jeder Benutzer hat seinen eigenen Bereich. Alle Programme sprechen den Server ausschließlich über HTTPS an; auf dem Amiga übernehmen das bsdsocket.library und AmiSSL 5, auf dem PC libcurl.

┌────────────────────────┐   HTTPS   ┌──────────────────────────────┐
│ amicloud, -shell,      │◄─────────►│ Apache + PHP                 │
│ amicloud-sync, Commander   │           │   api.php  REST-API          │
│ (Amiga und PC)         │           │   web.php  Weboberfläche     │
└────────────────────────┘           │ MariaDB (Benutzer, Metadaten)│
┌────────────────────────┐   HTTPS   │ Speicher/<benutzer>/        │
│ AMICLOUD:-Handler (Amiga) │◄─────────►│                              │
└────────────────────────┘           └──────────────────────────────┘
ProgrammPlattformZweck
amicloudAmiga + PCKommandozeilen-Client, ein Befehl je Aufruf
amicloud-shellAmiga + PCinteraktive Sitzung mit cd, ls, get, put …
amicloud-syncAmiga + PCeinmaliger Abgleich lokaler Ordner ↔ Cloud
amicloud-commanderAmiga (MUI) + PC (Qt 6)Dateimanager mit zwei Panels
AmiCloudPrefsAmigaEinstellungs-Editor für amicloud.cfg
amicloud-handler, amicloud-workerAmigaLaufwerk AMICLOUD: (Handler und Netzwerk-Prozess)

Der Server merkt sich neben dem Dateiinhalt auch Amiga-Eigenschaften: Protection-Bits, Dateikommentare und das Änderungsdatum. Über AMICLOUD: funktionieren deshalb auch Protect, FileNote und SetDate.

2. Voraussetzungen

WasWofür
AmigaOS 3.x, 68020 oder besseralle Amiga-Programme
TCP/IP-Stack mit bsdsocket.library (Version 4 oder neuer), z. B. Roadshow, AmiTCP, Miamialle Programme außer AmiCloudPrefs
AmiSSL 5 (amisslmaster.library) mit den CA-Zertifikaten der AmiSSL-Installationalle Programme außer AmiCloudPrefs
MUI 3.8 oder neuer (muimaster.library ab Version 19)nur amicloud-commander
ein erreichbarer AmiCloud-Serveralle Programme außer AmiCloudPrefs

Stack muss nicht eingestellt werden: die Programme fordern beim Start selbst 64 KB an, der Handler erhält 16 KB über seinen DOSDriver, der Worker 64 KB beim Start durch den Handler.

Speicher: Der AMICLOUD:-Handler hält eine geöffnete Datei vollständig im Arbeitsspeicher. Für sehr große Dateien lieber amicloud get/put benutzen, die direkt von und auf die Platte übertragen.

3. Installation mit Install-AmiCloud Amiga

Die Installationsschublade AmiCloud (zum Beispiel aus AmiCloud.lha) enthält:

Der Installer fragt zuerst nach dem Installationsmodus.
AmigaDer Installer fragt zuerst nach dem Installationsmodus.
Im Modus „Geübter Benutzer“ lassen sich die Teile einzeln wählen.
AmigaIm Modus „Geübter Benutzer“ lassen sich die Teile einzeln wählen.
AmiCloud/
  Install-AmiCloud          Installationsskript (Commodore-Installer)
  Install-AmiCloud.shell    dasselbe als Shell-Skript
  Uninstall-AmiCloud        Deinstallationsskript
  ReadMe                    Kurzbeschreibung
  LICENSE                   GNU GPL Version 3
  THIRD-PARTY-NOTICES       Lizenz der Fremdkomponente Parson (MIT)
  C/                        alle Programme
  Docs/AmiCloud.guide       Handbuch (AmigaGuide)
  Examples/                 amicloud.cfg.example, AMICLOUD.mountlist
  Storage/DOSDrivers/AMICLOUD  DOSDriver für AMICLOUD:

Alle Teile haben Workbench-Icons. Zum Installieren in der Schublade das Icon Install-AmiCloud doppelt anklicken. Es startet den Commodore-Installer (bei AmigaOS 3.2 in SYS:System, bei älteren Systemen von der Install-Diskette nach C: kopieren). Ohne Installer gibt es dasselbe als Shell-Skript:

CD AmiCloud
Execute Install-AmiCloud.shell

Wer den Installer aus der Shell startet, wechselt vorher mit CD in die Schublade: Das Skript sucht seine Dateien relativ zum aktuellen Verzeichnis. Von einem anderen Verzeichnis aus bricht es mit einem Hinweis ab.

Aktualisieren: Eine neuere Version installiert man genauso – Archiv auspacken, Installer erneut starten. Er vergleicht bei jedem Programm die installierte Version mit der im Archiv. Als Einsteiger oder Geübter Benutzer ersetzt er gleiche und ältere Versionen; eine neuere installierte Version bleibt stehen und wird am Ende genannt. Im Expertenmodus zeigt er bei jedem schon installierten Programm beide Versionen und fragt. Vorhandene Icons (mit eigenen Tooltypes und Positionen) bleiben erhalten. Die Shell-Variante fragt nur nach, wenn ein installiertes Programm neuer ist als das im Archiv. Ist AMICLOUD: schon gemountet, arbeitet es bis zum nächsten Neustart mit der alten Version weiter.

Das Skript fragt, welche Teile installiert werden sollen (im Installer per Auswahlliste, im Shell-Skript mit y oder n):

  1. Kommandozeilenprogramme nach C:
  2. amicloud-commander nach SYS:Tools
  3. AmiCloudPrefs nach SYS:Prefs
  4. AMICLOUD:-Handler nach L: und DEVS:DOSDrivers

Danach legt es ENVARC:amicloud.cfg und ENV:amicloud.cfg aus der Beispieldatei an – aber nur, wenn es sie noch nicht gibt. Eine vorhandene Konfiguration und ein vorhandener DOSDriver DEVS:DOSDrivers/AMICLOUD werden nie überschrieben. Anschließend bietet das Skript an, AmiCloudPrefs zu starten (dort Server, Benutzer und Passwort eintragen und Speichern wählen) und AMICLOUD: sofort zu mounten. Ist HELP: zugewiesen, kopiert es das Handbuch nach HELP:AmiCloud.guide.

amicloud list /
Dir AMICLOUD:

Für die Programme werden keine Icons mitgeliefert. Wer AmiCloudPrefs oder den Commander von der Workbench starten möchte, legt sich ein Icon an.

4. Manuelle Installation Amiga

Datei aus der SchubladeZiel
C/amicloud, C/amicloud-shell, C/amicloud-syncC:
C/amicloud-commanderSYS:Tools/ (oder beliebig)
C/AmiCloudPrefsSYS:Prefs/
C/amicloud-handlerL: (steht so im DOSDriver)
C/amicloud-workerL: – Name und Ort sind fest, der Handler startet ihn von dort
Storage/DOSDrivers/AMICLOUDDEVS:DOSDrivers/
Examples/amicloud.cfg.exampleENVARC:amicloud.cfg und ENV:amicloud.cfg (nur, wenn noch keine existiert)
Docs/AmiCloud.guideHELP: (oder beliebig)
Copy C/amicloud C/amicloud-shell C/amicloud-sync C:
Copy C/amicloud-commander SYS:Tools/
Copy C/AmiCloudPrefs SYS:Prefs/
Copy C/amicloud-handler C/amicloud-worker L:
Copy Storage/DOSDrivers/AMICLOUD DEVS:DOSDrivers/
Copy Examples/amicloud.cfg.example ENVARC:amicloud.cfg   ; nur ohne vorhandene
Copy ENVARC:amicloud.cfg ENV:amicloud.cfg                ; Konfiguration

5. AmiCloud auf dem PC macOS · Linux · Windows

Für den PC gibt es amicloud, amicloud-shell, amicloud-sync und den Dateimanager amicloud-commander (Qt 6). Sie werden aus den Quellen gebaut (Kapitel 16) und mit make install nach /usr/local/bin installiert (PREFIX/DESTDIR werden unterstützt), oder von Hand aus bin/pc/ kopiert.

Konfiguration: dieselben Schlüssel wie auf dem Amiga (Kapitel 7), die Datei heißt ~/.amicloudrc (Windows-Builds ohne MSYS-Umgebung: amicloud.cfg im aktuellen Verzeichnis). Der Qt-Commander liest ~/.amicloudrc (Windows ohne HOME: %USERPROFILE%\.amicloudrc) und fragt fehlende Angaben in einem Verbindungsdialog ab, speichert sie aber nicht.

cp config-examples/amicloud.cfg.example ~/.amicloudrc
chmod 600 ~/.amicloudrc
amicloud list /

6. Den Server einrichten

Der Server liegt dem Archiv als Schublade Server bei und läuft auf Linux mit Apache 2.4, PHP 7.4 oder neuer (Erweiterungen pdo_mysql, fileinfo und mbstring, für ZIP-Downloads zip) und MariaDB/MySQL. HTTPS ist Pflicht: die API lehnt Klartext-HTTP mit 403 ab. Die vollständige Anleitung mit allen Befehlen steht in INSTALL.md im Server-Paket; hier die Kurzfassung für amicloud.example.com:

  1. Virtual Host mit DocumentRoot /var/www/amicloud und AllowOverride All anlegen. Der Server gehört an die Wurzel des Hostnamens, weil web.php sich mit /web.php verlinkt.
  2. HTTPS: sudo certbot --apache -d amicloud.example.com
  3. Dateien: sudo cp -r server/. /var/www/amicloud/ – mit Punkt, damit die .htaccess-Dateien mitkommen. Speicherverzeichnis /var/amicloud-storage außerhalb des Web-Verzeichnisses anlegen, beides dem Apache-Benutzer geben.
  4. config.php aus config.php.example kopieren und ausfüllen (Tabelle unten).
  5. Datenbank: sudo mysql < /var/www/amicloud/sql/schema.sql, dann einen DB-Benutzer mit SELECT, INSERT, UPDATE, DELETE auf amicloud.* anlegen. sql/migrate_001.sql bis migrate_004.sql sind nur für ältere Installationen.
  6. Ersten Administrator anlegen (Passwort wird abgefragt):
    cd /var/www/amicloud
    sudo -u apache php bin/amicloud-admin.php user:add --admin bob
    Weitere Benutzer legt der Administrator in der Weboberfläche an.
  7. Testen:
    curl -u bob:geheim "https://amicloud.example.com/api.php?action=status"
    AC_SERVER=https://amicloud.example.com AC_USER=bob AC_PASS=geheim \
        sh scripts/test_api.sh
    Weboberfläche: https://amicloud.example.com/web.php
Konstante in config.phpBedeutung
AMICLOUD_TIMEZONEZeitzone aller Zeitangaben der API (bewusst nicht UTC, Standard Europe/Berlin); sollte zu gmt_offset/dst der Amiga-Clients passen
DB_HOST, DB_NAME, DB_USER, DB_PASSDatenbankzugang
STORAGE_PATHabsoluter Pfad des Speicherverzeichnisses, außerhalb des Web-Verzeichnisses; je Benutzer entsteht automatisch ein Unterordner
MAX_UPLOADgrößte Datei in Bytes; post_max_size (und memory_limit) in der php.ini passend wählen
AMICLOUD_ALLOW_HTTPerlaubt Klartext-HTTP – nur für einen lokalen Test mit php -S, nie in Produktion
Hinweis PHP-FPM
Läuft PHP als FPM/CGI, reicht Apache die Basic-Auth-Daten nicht von selbst weiter – jede Anfrage endet dann mit 401. Abhilfe: CGIPassAuth On im <Directory>-Block.

Die Weboberfläche

Unter https://amicloud.example.com/web.php bedient sich die Cloud im Browser ähnlich wie ownCloud:

Die Dateiansicht der Weboberfläche.
BrowserDie Dateiansicht der Weboberfläche.
Die Suche findet Dateien nach Muster, hier *.txt.
BrowserDie Suche findet Dateien nach Muster, hier *.txt.
„Zuletzt geändert“ zeigt die neuesten Dateien.
Browser„Zuletzt geändert“ zeigt die neuesten Dateien.
Die Übersicht der Freigaben.
BrowserDie Übersicht der Freigaben.
Die Benutzerverwaltung für Administratoren.
BrowserDie Benutzerverwaltung für Administratoren.

App-Passwörter

Statt des Kontopassworts gehört in amicloud.cfg am besten ein eigenes App-Passwort je Gerät (Persönliche Einstellungen → Geräte & App-Passwörter). Es hat die Form xxxxx-xxxxx-xxxxx-xxxxx-xxxxx, wird nur einmal angezeigt (mit fertigen Zeilen für amicloud.cfg) und lässt sich einzeln widerrufen, wenn ein Gerät verloren geht.

Unter „Einstellungen“ legst du je Gerät ein eigenes App-Passwort an.
BrowserUnter „Einstellungen“ legst du je Gerät ein eigenes App-Passwort an.

7. Konfiguration: amicloud.cfg

Alle AmiCloud-Programme lesen dieselbe Datei. Jede Zeile hat die Form schluessel=wert, Zeilen mit # am Anfang sind Kommentare.

server=https://amicloud.example.com
user=bob
pass=geheim
#basepath=/
#verify_ssl=1
#debug=T:amicloud.log
#gmt_offset=60
#dst=0
#timeout=120
#cache_ttl=30
SchlüsselStandardBedeutung
server– (Pflicht)Basis-URL des Servers, ohne /api.php
user / username– (Pflicht)Benutzername
pass / password– (Pflicht)Passwort (steht im Klartext in der Datei) – am besten ein App-Passwort
basepath/Startverzeichnis auf dem Server; Pfade ohne führenden / beziehen sich darauf
verify_ssl11 = Serverzertifikat prüfen, 0 = nicht prüfen (nur zum Testen)
debugleernur AMICLOUD:-Handler (amicloud-worker): Ziel für ein ausführliches HTTP/TLS-Protokoll, z. B. T:amicloud.log oder CON:0/0/640/200/AmiCloud Debug/CLOSE
gmt_offset0nur Amiga: Abstand der Systemuhr zu UTC in Minuten (MEZ = 60)
dst0nur Amiga: 1 = Sommerzeit, addiert 60 Minuten
timeout120Netz-Timeout in Sekunden: so lange darf eine Verbindung ganz ohne Datenfluss bleiben, bevor sie als abgebrochen gilt. Die Dauer einer Übertragung ist nicht begrenzt – eine große Datei über ein Modem läuft, solange Daten fließen.
cache_ttl30nur AMICLOUD:-Handler: wie viele Sekunden ein Verzeichnisinhalt zwischengespeichert wird; über ein Modem lohnen 120 bis 300
charset(System)nur Amiga: Zeichensatz der Dateinamen, z. B. ISO-8859-2 oder AmigaPL; leer = Zeichensatz des Systems

Umlaute in Dateinamen (ab 0.3): Der Server speichert Namen in UTF-8, der Amiga in seinem eigenen Zeichensatz. Alle Programme und der AMICLOUD:-Handler wandeln um, über die codesets.library (ab Version 6, Aminet util/libs/codesets). Fehlt sie, gilt ISO-8859-1. Zeichen, die es im lokalen Zeichensatz nicht gibt (Emoji, chinesische Schrift), erscheinen als _; die Datei bleibt unter diesem Namen erreichbar, und der Abgleich ordnet sie wieder richtig zu.

Gleiche Namen bis auf Groß-/Kleinschreibung: Auf dem Server können abc und ABC (auch Äpfel und äpfel) nebeneinander liegen, auf dem Amiga wären sie eine Datei. Der Handler zeigt dann die erste (nach Zeichencode) unter ihrem Namen, die anderen als abc_2, abc_3 usw., vor der Endung (x_2.info); ebenso zwei Namen, die beide als _ erscheinen würden. Unter diesen Namen lassen sie sich lesen, schreiben, umbenennen und löschen. Der Abgleich, get -r und das Kopieren im Commander (auch unter macOS und Windows) holen solche Namen nicht, sondern melden sie.

gmt_offset und dst werden von amicloud-shell und vom AMICLOUD:-Handler ausgewertet. Die Amiga-Uhr kennt keine Zeitzone; ohne passende Werte stimmen die Datumsangaben von Dateien nicht mit dem Server überein. Auf dem PC werden beide Werte ignoriert.

ProgrammGesucht wird (erste gefundene Datei gilt)
amicloud, amicloud-shell, amicloud-sync (Amiga)-c <datei>, sonst ENV:amicloud.cfg, sonst amicloud.cfg im aktuellen Verzeichnis
amicloud, amicloud-shell, amicloud-sync (PC)-c <datei>, sonst ~/.amicloudrc (Windows ohne MSYS: amicloud.cfg im aktuellen Verzeichnis)
amicloud-commander (MUI)ENV:amicloud.cfg, sonst amicloud.cfg im aktuellen Verzeichnis
amicloud-commander (Qt)~/.amicloudrc, fehlende Angaben per Dialog
amicloud-worker (AMICLOUD:)nur ENV:amicloud.cfg, einmal beim Start
AmiCloudPrefsENV:amicloud.cfg, sonst ENVARC:amicloud.cfg

ENV: ist nach einem Neustart leer; damit die Einstellungen bleiben, gehört die Datei auch nach ENVARC: – AmiCloudPrefs erledigt das mit Speichern. Kommandozeilenoptionen (-s, -u, -p, -d, -k) gehen den Werten aus der Datei vor.

8. AmiCloudPrefs Amiga

Aufruf: SYS:Prefs/AmiCloudPrefs. Ein GadTools-Fenster mit den Feldern Server, Benutzer, Passwort, Basis-Pfad, Zertifikat prüfen, Debug-Ziel, GMT-Offset (Min) und Sommerzeit – also allen Schlüsseln aus Kapitel 7.

AmiCloudPrefs auf der Workbench.
AmigaAmiCloudPrefs auf der Workbench.
KnopfWirkung
Speichernschreibt ENVARC:amicloud.cfg und ENV:amicloud.cfg (gilt sofort und dauerhaft)
Benutzenschreibt nur ENV:amicloud.cfg (gilt bis zum Neustart)
Abbrechenschreibt nichts

Unterscheiden sich ENV: und ENVARC:, zeigt die Statuszeile einen Hinweis; angezeigt werden dann die Werte aus ENV:. Der AMICLOUD:-Handler liest die Datei nur einmal beim Start – geänderte Einstellungen wirken dort erst nach einem Neustart.

9. amicloud – Kommandozeilen-Client Amiga + PC

amicloud [Optionen] <Befehl> [Argumente]
OptionBedeutung
-s <url>Server-URL
-u <name>Benutzername
-p <pass>Passwort
-d <pfad>Basis-Pfad auf dem Server (Standard /)
-c <datei>andere Konfigurationsdatei
-kZertifikat nicht prüfen (nur zum Testen)
-vausführliches HTTP-Protokoll nach stderr (nur Amiga)
--helpKurzhilfe
BefehlBedeutung
list [pfad]Verzeichnis auflisten
get [-f] <remote> [lokal]Datei herunterladen; ohne lokalen Namen unter ihrem Namen ins aktuelle Verzeichnis
put [-f] <lokal> [remote]Datei hochladen; ohne Zielangabe unter ihrem Namen in den Basis-Pfad
del <remote>Datei oder leeres Verzeichnis löschen
info <remote>Größe, Datum, MD5 usw. anzeigen
mkdir <pfad>Verzeichnis anlegen
rename <alt> <neu>umbenennen oder verschieben
search <muster> [pfad] (auch find)rekursiv nach Namen suchen; ein Treffer je Zeile, Verzeichnisse mit /; Standard-Bereich ist der Basis-Pfad; höchstens 2000 Treffer
quota (auch df)Konto und belegten Speicher anzeigen
versionVersion anzeigen (ohne Server)

Remote-Pfade mit führendem / sind absolut, alle anderen beziehen sich auf den Basis-Pfad. Die MD5-Prüfsumme wird bei get und put während der Übertragung geprüft. Suchmuster: *, ? und die AmigaDOS-Form #?. Rückgabewert: 0 bei Erfolg.

amicloud list /
amicloud put S:Startup-Sequence /backup/Startup-Sequence
amicloud get /backup/Startup-Sequence RAM:ss
amicloud mkdir /archiv
amicloud rename /backup/Startup-Sequence /archiv/ss-alt
amicloud info /archiv/ss-alt
amicloud search '#?.txt' /
amicloud -s https://amicloud.example.com -u bob -p geheim list
Überschreiben
Gibt es das Ziel schon (bei put auf dem Server, bei get lokal), fragen beide nach ('/bericht.txt' already exists on the server. Overwrite? [j/N]); nur y überschreibt. Mit -f (auch --force oder FORCE direkt nach get/put) wird ohne Frage überschrieben. Ohne Eingabe (z. B. in Skripten) wird nichts überschrieben und amicloud endet mit Rückgabewert 1 – in Skripten also -f verwenden. put fragt dazu den Server einmal zusätzlich ab; ist das nicht möglich (Netz- oder Serverfehler), wird nichts übertragen. Ist das Ziel auf dem Server ein Verzeichnis, bricht put ab: den vollständigen Zielpfad samt Dateinamen angeben.

Zielname: Ohne Zielangabe verwendet put den Teil hinter dem letzten / oder : – aus DH0:bericht.txt wird /bericht.txt, aus DH0:texte/bericht.txt ebenfalls. Nur ein Pfad ohne Dateinamen (z. B. DH0:) wird abgelehnt.

10. amicloud-shell – interaktive Shell Amiga + PC

amicloud-shell [Optionen] – Optionen wie bei amicloud (-s -u -p -d -c -k -v --help). Nach dem Start zeigt die Shell Server, Serverversion, Benutzer sowie Remote- und lokales Verzeichnis und wartet auf Befehle. Mit Cursor hoch/runter lassen sich frühere Eingaben der Sitzung wiederholen.

amicloud-shell: Ordner wechseln und Dateien holen.
Amigaamicloud-shell: Ordner wechseln und Dateien holen.
BefehlBedeutung
helpÜbersicht
pwd / lpwdRemote- / lokales Verzeichnis zeigen
cd [pfad]Remote-Verzeichnis wechseln (ohne Pfad: zurück zum Basis-Pfad)
lcd [pfad]lokales Verzeichnis wechseln (ohne Pfad: zurück zum Startverzeichnis); .. eine Ebene höher, : oder \ Wurzel
ls|dir|list [pfad] [-n|-s|-d|-m]Remote-Verzeichnis auflisten
lls|ldir|llist [pfad] [-n|-s|-d|-m]lokales Verzeichnis auflisten
get [-r] [-f] <remote/muster> [lokal]herunterladen (fragt vor dem Überschreiben)
put [-r] [-f] <lokal/muster> [remote]hochladen (fragt vor dem Überschreiben)
del|rm|delete [-r|-f] <pfad>löschen
mkdir|makedir <pfad>Verzeichnis anlegen
rename|mv <alt> <neu>umbenennen / verschieben
info|stat <pfad>Metadaten anzeigen
search|find <muster> [pfad]rekursiv suchen, Standard: aktuelles Remote-Verzeichnis
md5 <remote> / lmd5 <lokal>MD5 einer Datei auf dem Server / lokal
quota|dfKonto und belegten Speicher anzeigen
history [clear]Verlauf anzeigen / löschen
quit|exit|byebeenden

Listen-Optionen: -n nur Namen, -s mit Größe, -d mit Datum, -m mit MD5 (lokal jedes Mal neu berechnet); ohne Option Name, Größe, Datum und Typ. Gleichwertig sind -r, --recursive, RECURSIVE, ALL (rekursiv) sowie -f, --force, FORCE (ohne Rückfrage: löschen bzw. überschreiben). Muster (* ? #?) sind bei get und put erlaubt. Auf dem Amiga bedeutet lcd .. dasselbe wie lcd /. Befehle lassen sich auch aus einer Datei lesen: amicloud-shell <befehle.txt.

Überschreiben: get und put fragen, bevor sie eine vorhandene Datei ersetzen. Bei einer einzelnen Datei genügt y oder n. Bei Mustern und -r zeigt die Shell Größe, Datum und – wenn bekannt – ob der Inhalt gleich ist, und bietet an: y überschreiben, n überspringen, a alle weiteren überschreiben, s alle weiteren überspringen, c ganzen Vorgang abbrechen; einfach Return überspringt. Mit -f wird ohne Frage überschrieben. Liest die Shell ihre Befehle aus einer Datei, ist keine Antwort möglich: Dann wird nichts überschrieben (Einzeldatei: nein, Muster/-r: Abbruch), und die Shell weist auf -f hin.

/> cd archiv
/archiv> lcd RAM:
/archiv> get -r fotos
/archiv> put #?.txt
/archiv> ls -d
/archiv> quit

11. amicloud-sync – Ordner abgleichen Amiga + PC

amicloud-sync [Optionen] <lokaler-ordner> <remote-ordner>
OptionBedeutung
-s, -u, -p, -cwie bei amicloud
-kZertifikat nicht prüfen (nur zum Testen)
-nProbelauf: zeigt, was passieren würde, ändert nichts
-f, FORCElöscht ohne Rückfrage, auch viele Dateien auf einmal (für Skripte, ab 0.3)
--helpKurzhilfe

amicloud-sync gleicht einen lokalen Ordner einmalig in beide Richtungen mit einem Ordner auf dem Server ab und beendet sich dann – kein Hintergrunddienst. So wird entschieden:

Den Stand des letzten Abgleichs merkt sich amicloud-sync in der Datei .amicloudsync im lokalen Ordner. Beim ersten Abgleich werden fehlende Ordner auf beiden Seiten angelegt (nicht beim Probelauf). Rückgabewert 1, wenn Fehler auftraten, sonst 0.

Schutz vor Datenverlust (ab 0.2)

Viele Löschungen auf einmal (ab 0.3): Würde ein Abgleich auf einer Seite mehr als 20 Einträge und mehr als die Hälfte des letzten Stands löschen (etwa weil ein Ordner versehentlich geleert wurde), fragt er vorher nach. Wer verneint, behält die Dateien: der nächste Abgleich kopiert sie auf die geleerte Seite zurück. Im Probelauf (-n) gibt es stattdessen eine Warnung. In Skripten ohne Rückfrage: -f bzw. FORCE (vor oder hinter den Ordnern).

Die Abschlusszeile zählt Konfliktkopien („1 Konfliktkopie(n)“) und nicht ausgeführte Löschungen („20 Loeschung(en) zurueckgehalten“) mit.

Lokale Dateien bekommen die Ortszeit nach gmt_offset und dst aus amicloud.cfg (die Sommerzeit wird von Hand umgestellt).

Schneller bei großen Ordnern (ab 0.3): Hat sich auf dem Server etwas geändert, holt der Abgleich nur noch die Liste der Änderungen seit dem letzten Mal, statt jeden Ordner einzeln abzufragen. Jeder 20. Abgleich liest trotzdem alles, ebenso nach einem Konflikt, nach mehr als 30 Tagen Pause oder wenn der Server-Ordner selbst umbenannt wurde. Das braucht den Server ab migrate_006.sql.

Virenprüfung (ab 0.3, optional): Ist die xvs.library installiert (Aminet util/virus), prüfen Abgleich, Kommandozeile, Shell und Dateimanager jede Datei bis 2 MB vor dem Hochladen und vor dem Ablegen eines Downloads. Eine verseuchte Datei wird weder übertragen noch gelöscht, sondern als Fehler mit dem Namen des Virus gemeldet. Ohne die Bibliothek wird nicht geprüft.

amicloud-sync -n Work:Texte /texte      ; erst schauen
amicloud-sync Work:Texte /texte         ; dann abgleichen

AmiCloud Desktop – Abgleich im Hintergrund macOS

AmiCloud Desktop gleicht wie der ownCloud-Client einen Ordner im Hintergrund ab. Es sitzt als Wolke in der Menüleiste und nutzt denselben Abgleich wie amicloud-sync, mit allen Schutzregeln oben (Konfliktkopien, Rückfrage bei vielen Löschungen). Es läuft auf Macs mit Apple-Chip ab macOS 26. Das Programm gehört nicht zum Aminet-Archiv; ein öffentlicher Download folgt mit der Veröffentlichung auf GitHub, Windows und Linux später.

AmiCloud Desktop: Der Assistent fragt zuerst nach dem Server.
MacAmiCloud Desktop: Der Assistent fragt zuerst nach dem Server.
Ordnerauswahl im Assistenten.
MacOrdnerauswahl im Assistenten.
Einstellungen: das Konto.
MacEinstellungen: das Konto.
Einstellungen: lokaler Ordner und Server-Ordner.
MacEinstellungen: lokaler Ordner und Server-Ordner.
Abgleich-Einstellungen mit der Rückfrage vor Massenlöschungen.
MacAbgleich-Einstellungen mit der Rückfrage vor Massenlöschungen.
Das Aktivitätsfenster protokolliert jeden Abgleich.
MacDas Aktivitätsfenster protokolliert jeden Abgleich.

12. amicloud-commander – Dateimanager

Ein Dateimanager mit zwei Panels nebeneinander. Jedes Panel zeigt über seinen Umschalter entweder lokale Dateien (Local) oder die Cloud (AmiCloud). Das zuletzt angeklickte Panel ist das aktive.

Der Commander auf dem Amiga (MUI).
AmigaDer Commander auf dem Amiga (MUI).
Der Commander auf dem Mac (Qt).
MacDer Commander auf dem Mac (Qt).
Die Suche des Commanders auf dem Mac.
MacDie Suche des Commanders auf dem Mac.

MUI-Fassung Amiga

Aufruf: amicloud-commander [-v] (braucht MUI 3.8). Server und Zugangsdaten kommen aus ENV:amicloud.cfg (sonst amicloud.cfg im aktuellen Verzeichnis); fehlt dort server, user oder pass, meldet der Commander das und beendet sich. Beim Start zeigt links das aktuelle Verzeichnis, rechts der Basis-Pfad in der Cloud.

Taste/KnopfAktion
F2Neu laden
F3Info zum gewählten Eintrag
F4Suchen: Muster (* ? #?), rekursiv ab dem Pfad des aktiven Panels; Treffer in eigenem Fenster, Doppelklick oder „Gehe zu“ springt hin
F5Kopieren ins andere Panel (Mehrfachauswahl möglich)
F6Verschieben des gewählten Eintrags ins andere Panel – nur zwischen Local und AmiCloud, mit Rückfrage
F7Verzeichnis anlegen
F8Löschen des gewählten Eintrags, mit Rückfrage; Verzeichnisse in der Cloud samt Inhalt, lokale nur, wenn sie leer sind
F10Beenden
Menü ProjektÜber AmiCloud Commander… (Amiga-?), Prüfsumme anzeigen (Amiga-M, MD5 der Auswahl), Umbenennen (Amiga-R), Suchen… (Amiga-S), Beenden (Amiga-Q)

Der Commander gibt normalerweise nichts auf der Konsole aus. Zur Fehlersuche: -v beim Start aus der Shell, oder beim Start von der Workbench das Tooltype DEBUG im Icon. Die MUI-Fassung ist auf echter Hardware noch wenig erprobt.

Qt-Fassung PC

Aufruf: amicloud-commander [-v|--verbose]. Liest ~/.amicloudrc; fehlen Angaben, fragt ein Verbindungsdialog danach (ohne zu speichern). Gleiche Funktionstasten F2–F10 (zusätzlich Tab wechselt das Panel, Entf löscht, Esc beendet). Unterschiede:

Gemeinsam

13. AMICLOUD:-Handler – die Cloud als Laufwerk Amiga

Der Handler macht den eigenen Cloud-Bereich zu einem AmigaDOS-Laufwerk AMICLOUD:; auf der Workbench erscheint es als Datenträger AmiCloud. Installation: amicloud-handler und amicloud-worker nach L:, der DOSDriver AMICLOUD nach DEVS:DOSDrivers/, dazu eine vollständige ENV:amicloud.cfg (Kapitel 3).

AMICLOUD: als Laufwerk auf der Workbench.
AmigaAMICLOUD: als Laufwerk auf der Workbench.
Mount AMICLOUD:          ; sofort (sonst beim nächsten Systemstart automatisch)
Dir AMICLOUD:
MakeDir AMICLOUD:Texte
Copy DH0:bericht.txt AMICLOUD:Texte/
Copy AMICLOUD:Texte/bericht.txt RAM:
Rename AMICLOUD:Texte/bericht.txt AMICLOUD:Texte/alt.txt
Protect AMICLOUD:Texte/alt.txt +p
FileNote AMICLOUD:Texte/alt.txt "Mein Kommentar"
SetDate AMICLOUD:Texte/alt.txt today
Delete AMICLOUD:Texte ALL

Was funktioniert: Lesen, Schreiben, Anlegen, Löschen und Umbenennen von Dateien und Verzeichnissen, Protection-Bits, Dateikommentare (bis 79 Zeichen), Datum setzen, Workbench-Fenster auf AmiCloud.

So arbeitet er: Der Handler selbst (amicloud-handler) beantwortet nur die DOS-Pakete. Die gesamte Netzwerkarbeit erledigt ein zweiter Prozess, amicloud-worker, den der Handler beim Mounten aus L: startet (er wartet bis zu 30 Sekunden darauf). Der Worker liest ENV:amicloud.cfg einmal beim Start und baut die Netzverbindung erst bei der ersten Anfrage auf – das Mounten beim Booten klappt deshalb auch, wenn der TCP/IP-Stack später startet. Verzeichnisinhalte werden 30 Sekunden zwischengespeichert (cache_ttl). Beim Lesen holt der Handler nur die Teile einer Datei, die ein Programm tatsächlich liest – zeigt die Workbench „Alle Dateien“ an, kostet eine Datei ohne Icon nur 4 KB, nicht ihre ganze Größe. Wird eine Datei geändert, lädt er sie ganz in den Speicher und lädt sie beim Schließen wieder hoch.

Grenzen

14. Fehlersuche

ProblemAbhilfe
„server URL required“, „username required“, „password required“Konfiguration fehlt oder ist unvollständig: ENV:amicloud.cfg bzw. ~/.amicloudrc prüfen, auf dem Amiga AmiCloudPrefs starten und Speichern wählen.
„network initialisation failed“TCP/IP-Stack läuft nicht (bsdsocket.library fehlt) oder AmiSSL 5 ist nicht installiert. Mit -v zeigen amicloud und amicloud-shell auf dem Amiga, wo es scheitert.
ZertifikatsfehlerUhrzeit des Amiga prüfen (ein falsches Datum macht Zertifikate ungültig) sowie die AmiSSL-Installation samt CA-Zertifikaten. Nur zum Testen: -k bzw. verify_ssl=0.
Anmeldung abgelehnt (401)Benutzername/Passwort prüfen – App-Passwort widerrufen oder Konto gesperrt? Serverseitig bei PHP-FPM CGIPassAuth On (Kapitel 6). AMICLOUD: meldet dann „Disk not validated“.
„Zu viele Fehlversuche“ (429)Nach 5 falschen Anmeldungen sperrt der Server 15 Minuten. Meist hat ein anderes Gerät noch ein altes Passwort in amicloud.cfg.
„Quota exceeded“ (507)Speicherkontingent voll: amicloud quota zeigt die Belegung; Dateien löschen oder den Administrator fragen.
Datum von Dateien stimmt nichtgmt_offset/dst passend zur Amiga-Uhr setzen und mit AMICLOUD_TIMEZONE des Servers vergleichen.
Mount AMICLOUD: schlägt fehlLiegt amicloud-worker in L:? Der Handler wartet bis zu 30 Sekunden auf den Worker.
AMICLOUD: reagiert nicht wie erwartetIn ENV:amicloud.cfg z. B. debug=T:amicloud.log eintragen, neu starten, Fehler auslösen und das Protokoll ansehen – der Worker protokolliert jeden Schritt vom Öffnen der Bibliotheken bis zur HTTP-Anfrage. Zusätzlich zeigt Type AMICLOUD:debuglog das Protokoll der Handler-Seite.
Commander startet nichtMUI 3.8 installiert? Konfiguration vollständig? Zur Fehlersuche mit -v aus der Shell starten.
Langsame Verbindung (Modem), Übertragungen brechen abAlle Timeouts greifen nur, wenn gar keine Daten fließen. Bricht es trotzdem ab, timeout=300 in amicloud.cfg setzen. Abgebrochene Downloads werden an der Abbruchstelle fortgesetzt, nicht neu begonnen. Ctrl-C bricht eine laufende Übertragung in amicloud, amicloud-shell und amicloud-sync ab. Für AMICLOUD: lohnt cache_ttl=300. Serverseitig: INSTALL.md im Server-Paket, Abschnitt „Langsame Clients“.
Pfeiltasten in amicloud-shell wirken nichtDie Shell braucht ein interaktives Konsolenfenster; bei Eingabe aus Datei oder Pipe gibt es keine Zeilenbearbeitung.

15. Deinstallation

Amiga: in der Installationsschublade Execute Uninstall-AmiCloud. Das Skript löscht die Programme aus C:, SYS:Tools, SYS:Prefs und L:, den DOSDriver und HELP:AmiCloud.guide; die Konfiguration nur nach Rückfrage. Ein gemountetes AMICLOUD: verschwindet erst mit dem nächsten Neustart. Von Hand:

Delete C:amicloud C:amicloud-shell C:amicloud-sync
Delete SYS:Tools/amicloud-commander SYS:Prefs/AmiCloudPrefs
Delete L:amicloud-handler L:amicloud-worker
Delete DEVS:DOSDrivers/AMICLOUD HELP:AmiCloud.guide
Delete ENV:amicloud.cfg ENVARC:amicloud.cfg     ; nur wenn gewünscht

PC: amicloud, amicloud-shell, amicloud-sync, amicloud-commander aus dem Installationsverzeichnis und ggf. ~/.amicloudrc löschen.

16. Bauen aus den Quellen

Die Quellen liegen auf GitHub: github.com/dangelrk/AmiCloud; die Amiga-Programme gibt es auch als Archiv auf Aminet. Die gemeinsamen Bibliotheken stecken im Projekt AmiCloudCore, das als Git-Submodul core/ eingebunden ist. Alle Einzelheiten stehen in docs/BUILD.md.

git clone --recurse-submodules https://github.com/dangelrk/AmiCloud.git
cd AmiCloud
make pc                   # PC: amicloud, amicloud-shell, amicloud-sync (libcurl)
make qt                   # PC: Qt-Commander (Qt 6, CMake)
export VBCC=/pfad/zu/vbcc
make amiga                # Amiga-Programme per vbcc -> bin/amiga/
make dist-amiga           # Installationsschublade build/dist/AmiCloud/

Nativ auf dem Amiga (vbcc, AmiSSL-, Roadshow- und MUI-SDK) im Projektverzeichnis Execute Build-Amiga; die SDK-Pfade stehen oben im Skript (AMISSL_INC, NET_INC, MUI_INC) oder werden über die Zuweisungen AmiSSL:, NetInclude:, MUI: gesetzt. Das Skript ist auf echter Hardware noch ungetestet.

17. API-Kurzreferenz und Sicherheit

Vollständige Referenz: api/API.md im Server-Paket. Basis-URL https://amicloud.example.com/api.php, HTTP Basic Auth bei jeder Anfrage. Antworten: {"status":"ok",…} bzw. {"status":"error","code":N,"message":"…"}; download liefert die Rohdaten.

ActionBedeutung
statusVersion, Serverzeit, Änderungszähler, Konto und Speicherkontingent
listVerzeichnis auflisten inkl. Protection-Bits, Kommentar, MD5
downloadDatei herunterladen (auch Teilbereiche mit offset/length)
uploadDatei hochladen (POST-Rumpf, optional md5=, 422 bei Abweichung)
deletelöschen (recursive=1 für nicht leere Verzeichnisse)
infoMetadaten einer Datei oder eines Verzeichnisses
mkdir, renameVerzeichnis anlegen, umbenennen/verschieben
setcomment, setprotect, setdateDateikommentar, Protection-Bits, Änderungsdatum setzen
searchNamen rekursiv suchen (* ? #?), höchstens 2000 Treffer
changesÄnderungen seit einem Zählerstand

18. Lizenz

AmiCloud – Copyright © 2026 Ronny Krueger.

AmiCloud ist freie Software. Sie dürfen es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder verändern, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version.

Maßgeblich ist allein der englische Lizenztext in der Datei LICENSE. Der enthaltene JSON-Parser Parson (© Krzysztof Gabis) steht unter der MIT-Lizenz; ihr Wortlaut liegt als THIRD-PARTY-NOTICES in der Installationsschublade.

19. Autor und Kontakt

AmiCloud wurde geschrieben von Ronny Krueger. Fehlermeldungen und Vorschläge: amitools@planet-rk.de. Quellen und Fehlerberichte: github.com/dangelrk/AmiCloud.

Verwandte Projekte: AmiCloudCore (gemeinsame Bibliotheken), AmiOwnCloud (OwnCloud/Nextcloud per WebDAV), AmiVCS (Versionsverwaltung).

20. Versionsgeschichte

Programme 0.10 (08.11.2026)
Alle Fenster der Amiga-Programme (Commander, AmiCloudPrefs) merken ihre Position. Commander (MUI): die Auswahl im aktiven Panel ist wieder gut zu sehen. Scheitert TLS an einer falschen Amiga-Uhr (z. B. leere RTC-Batterie), nennt die Meldung die Uhrzeit und bittet, sie zu prüfen.
Programme 0.9 (07.11.2026)
AMICLOUD: legt leere Dateien jetzt auch auf dem Server an: Copy einer leeren Datei erzeugte vorher gar nichts, und eine mit MODE_NEWFILE geleerte Datei behielt auf dem Server ihren alten Inhalt. Wird eine Datei mit SetFileSize verlängert, sind die neuen Bytes Nullen. amicloud-commander rechnet lokale Dateizeiten mit gmt_offset und dst um. Server: Löschen und gleichzeitiges Hochladen derselben Datei kommen sich nicht mehr in die Quere; Hochladen unterhalb einer Datei ergibt 409, eine ungültige Range wird ignoriert, das Web meldet ein volles Kontingent mit 507. Hinweis auf den experimentellen Status ergänzt.
Programme 0.8 (07.11.2026)
Handbuch überarbeitet. Der Installer meldet es jetzt, wenn er nicht aus seiner Schublade gestartet wird, statt mit „object in use“ abzubrechen.
Programme 0.7 (02.11.2026)
Namen, die sich nur in Groß-/Kleinschreibung unterscheiden (auch Umlaute): AMICLOUD: zeigt den zweiten als name_2, jeder führt zu seiner Datei; Abgleich, get -r/get mit Muster und die Commander holen solche Namen nicht, sondern melden sie. Commander: Verschieben löscht die Quelle nur noch nach erfolgreicher Kopie. AmiCloud Desktop: ab macOS 26.
Programme 0.6 (02.11.2026)
Keine Änderungen an den Programmen; die Versionsnummer folgt dem gemeinsamen Release mit AmiOwnCloud und AmiVCS.
Programme 0.5 (01.11.2026)
Wird eine Anmeldung abgelehnt (falsches Passwort), versuchen es die Programme mit denselben Zugangsdaten 15 Minuten lang nicht erneut und melden den Fehler sofort. Vorher konnte ein Zugriff nach dem anderen die Sperre des Servers gegen zu viele Fehlversuche auslösen und immer weiter verlängern.
Programme 0.4 (01.11.2026)
AMICLOUD:: SetDate und Copy CLONE übernehmen das Datum (vorher wurde daraus immer der 01.01.1978). Der Server liegt dem Amiga-Archiv bei (Schublade Server).
Programme 0.3 (01.11.2026)
Umlaute in Dateinamen (über codesets.library, sonst ISO-8859-1); Leerzeichen und Sonderzeichen in Pfaden. Abgleich: bei Konflikten bleiben beide Fassungen erhalten, Rückfrage vor dem Löschen vieler Dateien, optionale Virenprüfung über xvs.library, schneller bei großen Ordnern (Änderungsliste des Servers). Neu: AmiCloud Desktop für macOS. Server: Änderungsliste seitenweise und mit Umbenennungen (Migration 006).
Programme 0.2 (31.10.2026)
Abgleich (amicloud-sync) sicherer: Abbruch bei Lesefehlern, Ctrl-C ohne Löschungen, kein leeres Neuanlegen eines verschwundenen Server-Ordners, Upload nur auf den beim Abgleich gesehenen Stand; zu lange und nur in der Schreibung verschiedene Namen werden übersprungen. Ortszeit für lokale Dateien. Mindestens 68020. Server: Upload mit Bedingung (if_revision, create_only).
Programme 0.1 (2026)
Erste Fassung: Server mit REST-API und Weboberfläche, amicloud, amicloud-shell, amicloud-commander (MUI und Qt), amicloud-sync, AmiCloudPrefs und der AMICLOUD:-Handler; Suche in allen Programmen; Keep-Alive-Verbindungen auf dem Amiga. Benutzerverwaltung, App-Passwörter, Speicherkontingente und öffentliche Links; Weboberfläche im Stil von ownCloud; quota in CLI und Shell, Belegung in den Commander-Statuszeilen und bei Info AMICLOUD:. Für langsame Verbindungen: Timeouts nur bei Stillstand (timeout), Fortsetzen abgebrochener Downloads, Ctrl-C bricht ab, AMICLOUD: bleibt während einer Übertragung bedienbar.
Handbuch 1.5 (08.11.2026)
Quellen und Fehlerberichte auf GitHub verlinkt.
Handbuch 1.3 (07.11.2026)
Mindestprozessor 68020 überall genannt, Archivnamen wie auf Aminet, Quellen folgen später auf GitHub, neue Kontaktadresse, Hinweis zum Start des Installers aus der Shell.
Handbuch 1.2 (23.10.2026)
Langsame Verbindungen: timeout, cache_ttl, Ctrl-C, Fortsetzen von Downloads, T:AmiCloud-unsaved.
Handbuch 1.1 (22.10.2026)
Weboberfläche, App-Passwörter, Benutzerverwaltung, quota.
Handbuch 1.0 (27.09.2026)
Neu geschrieben für das eigenständige Projekt AmiCloud mit Installationsschublade, Install-AmiCloud und Uninstall-AmiCloud.