Ich wollte nur eine Erfahrung für die weniger erfahrenen und sachkundigen Administratoren teilen, die sich durch Dinge kämpfen. Es begann damit, dass ich es nach einigen anhaltenden Problemen fragte. Es gab mir Befehle und führte mich durch die Dinge. Aber der wirkliche Durchbruch war, als ich Claude Code direkt über SFTP und SSH verband…

Sobald es verbunden war, leistete es Erstaunliches! Unser Discourse wird nur von einer Gruppe von Freunden genutzt, daher haben wir nicht viel Budget, um Dinge zu tun, wenn etwas schiefgeht. Kürzlich fand Claude Code allerlei Kleinigkeiten in meiner Konfiguration, die nicht stimmten.
-
Korrigierte meine S3-on-Spaces-Einrichtung. Ich war nah dran, aber es gab immer noch Probleme mit dem korrekten Laden von JS-Assets beim Rebuild. Die ganze Saga hier: Digital Ocean Spaces (S3) "unable to sign request without credentials set" - #20 by DavidO
- Es hat es genau richtig eingestellt
-
Behob das Laden von X.com Discourse JS anstelle der Verwendung eines API-Schlüssels
-
Führte mich durch die CDN-Einrichtung, Cloudflare DNS-Einstellungen und alles
- Hat alles neu gebacken
-
Es fand 4.000 verwaiste Tapatalk-Bilder aus unserer alten phpBB-Migration und band sie ein
-
Konvertierte eine Reihe alter BBCode in HTML, damit Bilder funktionierten
-
Es stellte fest, dass mein Digital Ocean Volume komplett leer war, und gab mir das Vertrauen, auf LÖSCHEN zu klicken und $/Monat zu sparen. Ich hatte alles nach S3 verschoben, oder zumindest war ich mir ziemlich sicher, aber ich war immer noch zu nervös, es zu löschen. Eigentlich peinlich, aber ich wollte keine Fotos verlieren.
Was aber noch mehr Spaß machte, war, dass es mir das Vertrauen gab, ein weiteres Projekt in Angriff zu nehmen: die Wiederbelebung unseres alten vBulletin-Boards, das von 2002 bis 2016 für einen Studentenclub lief. Es geriet in Verfall und wurde schließlich stillgelegt, nachdem es einigen Telefonen HIV gegeben hatte. Es konnte ein altes Backup nehmen, es entpacken und wiederherstellen.
Es leistete beeindruckende Arbeit:
- Importierte 12.394 Themen und 282.096 Beiträge
- Die Datenbank war so beschädigt, dass wir Teile davon als separate Tabellen, oder Teile von Tabellen, als CSVs exportierten, da es keine vollständige SQL-Datei erstellen konnte. Mehr als 25 einzelne Dateien. Es setzte sie zusammen und erstellte dann die Discourse-Importdatei.
- Migrierte und verband 9.504 Bilder aus dem Backup neu
- Dann ging es hinein und zog einige fehlende Bilder aus der WayBackMachine und anderen Importen. Ich gab ihm ein Backup eines phpGallery2, das wir damals verwendet hatten, und es fand 288 weitere Bilder und band sie in 735 anderen Beiträgen ein.
- Ich warf ihm einfach Verzeichnisse und Zip-Backup-Dateien zu, und es sortierte alles und fand alle möglichen Dinge und verband sie direkt miteinander
- Leider konnte es bei den über 7.000 Bildern, die auf Photobucket waren, nicht viel tun
- Zog weitere 780 heißverlinkte Bilder herein
- Stellte 143 von 159 Benutzernamen wieder her, die zuvor gelöscht worden waren und nur als „system“ angezeigt wurden
- Fand auch ihre Avatare
- Es fand sogar meinen alten Avatar, ein Bild des besten guten Jungen aller Zeiten!
- Zensierte über 5.000 „kollegiale“ * *** *** Wörter, die liebevoll bekannt sind als: DER SLUR-BERICHT
- Es erstellte neue Logos basierend auf einigen alten Fragmenten, die es aus den Dateien hatte
- Es stellte alle klassischen vBulletin-Emojis wieder her und band sie in alle Beiträge ein
- Es meldete, dass :flipoff2: das am häufigsten verwendete Emoji war (19.191 Vorkommen), gefolgt von :rolleyes : und :beer : (mit großem Abstand)
- Es ermöglichte einige Suchen und Ersetzen von Namen, Telefonnummern oder E-Mails, die öffentlich waren.
- Führte mich durch den Wechsel zur Resend API
- Führte mich durch die SSL-Konfiguration
- Führte mich durch die CORS-Konfiguration
- Dann, bevor wir zu tief eingestiegen waren, führte es einen ClamAV-Scan aller Dateien durch
Es lief fast eine Woche im Hintergrund, hier und da über mehrere Sitzungen hinweg. Es war ein lustiger Blick in die Vergangenheit, als wir Bilder und Details über Ausflüge und Projekte fanden.
Ich bin auch sehr beeindruckt, dass es Menschen gibt, die wissen, was das hier tut…
Allow Claude to Run cat << 'RUBY' > /tmp/tapatalk_analysis.rb
posts_with_tapatalk = Post.where("raw LIKE '%uploads/tapatalk/%'").where(deleted_at: nil)
dual_ref_count = 0
tapatalk_only_count = 0
tapatalk_only_files = []
posts_with_both = 0
posts_tapatalk_only = 0
posts_with_tapatalk.find_each do |post|
raw = post.raw
tapatalk_urls = raw.scan(/uploads\/tapatalk\/\[^\\s\"'\u003c\u003e)\]\]+/)
has_upload_ref = raw.include?("upload://")
post_has_dual = false
post_has_only = false
tapatalk_urls.each do |url|
idx = raw.index(url)
next unless idx
start_pos = [idx - 200, 0].max
context = raw[start_pos..idx + 10]
if context && context.include?("upload://")
dual_ref_count += 1
post_has_dual = true
else
tapatalk_only_count += 1
post_has_only = true
tapatalk_only_files << url unless tapatalk_only_files.include?(url)
end
end
posts_with_both += 1 if post_has_dual
posts_tapatalk_only += 1 if post_has_only
end
puts "=== TAPATALK IMAGE ANALYSIS ==="
puts "Dual reference (upload:// + tapatalk): #{dual_ref_count} refs"
puts "Tapatalk only (no upload:// nearby): #{tapatalk_only_count} refs"
puts "Unique tapatalk-only files: #{tapatalk_only_files.length}"
puts "Posts with at least one dual ref: #{posts_with_both}"
puts "Posts with at least one tapatalk-only ref: #{posts_tapatalk_only}"
puts "---SAMPLE TAPATALK-ONLY FILES---"
tapatalk_only_files.first(15).each { |f| puts f }
RUBY
scp /tmp/tapatalk_analysis.rb root@23.21.11.54:/tmp/ 2>/dev/null && echo "Uploaded"?
Extrem beeindruckend.
Jedenfalls wollte ich das nur teilen, falls die Idee jemand anderen zu etwas Spaß anregen könnte. Machen Sie ein gutes Backup und lassen Sie es laufen!
Viel Spaß beim Discourse’n. ![]()
