Je voulais juste partager une expérience pour les administrateurs moins qualifiés et moins expérimentés qui luttent avec les choses. Tout a commencé par moi lui demandant à propos de certains problèmes persistants. Il me donnait des commandes et me guidait à travers les choses. Mais la vraie percée a été lorsque j’ai connecté Claude code directement via SFTP et SSH…

Une fois connecté, il a fait des choses incroyables ! Notre Discourse est juste utilisé par un groupe d’amis, nous n’avons donc pas beaucoup de budget pour faire des choses si quelque chose ne va pas. Récemment, Claude Code a trouvé toutes sortes de petites choses qui n’allaient pas avec ma configuration.
-
A corrigé ma configuration S3 sur Spaces. J’étais proche, mais il y avait encore des problèmes avec le chargement correct des actifs JS lors de la reconstruction. Saga complète ici : Digital Ocean Spaces (S3) "unable to sign request without credentials set" - #20 by DavidO
- Il l’a réglé parfaitement
-
A corrigé le chargement JS de Discourse X.com au lieu d’utiliser une clé API
-
M’a guidé à travers la configuration du CDN, les paramètres DNS Cloudflare et tout
- A tout ré-analysé (Rebaked)
-
Il a trouvé 4 000 images Tapatalk orphelines de notre ancienne migration phpBB et les a liées
-
A converti un tas de vieux BBCode en HTML pour que les images fonctionnent
-
Il a découvert que mon volume Digital Ocean était complètement vide et m’a donné la confiance nécessaire pour appuyer sur SUPPRIMER et économiser $/mois. J’avais tout déplacé vers S3, ou du moins j’étais à peu près sûr de l’avoir fait, mais j’étais encore trop nerveux pour le supprimer. C’est embarrassant, mais je ne voulais perdre aucune photo.
Mais ce qui était encore plus amusant, c’est qu’il m’a donné la confiance nécessaire pour entreprendre un autre projet, la résurrection de notre ancien forum vBulletin qui fonctionnait de 2002 à 2016 pour un club universitaire. Il est tombé en désuétude et a finalement été retiré après avoir donné le VIH à quelques téléphones. Il a pu prendre une ancienne sauvegarde, la décompresser et la reconstruire.
Il a fait un travail impressionnant :
- A importé 12 394 sujets et 282 096 messages
- La base de données était si corrompue que nous avons exporté des morceaux de celle-ci sous forme de tables séparées, ou de morceaux de tables, en tant que CSV car elle ne faisait pas le fichier SQL complet. Plus de 25 fichiers individuels. Il a tout assemblé, puis a créé le fichier d’importation Discourse.
- A migré et reconnecté 9 504 images de la sauvegarde
- Ensuite, il est allé chercher des images manquantes sur la WayBackMachine et d’autres importations. Je lui ai donné une sauvegarde d’une phpGallery2 que nous utilisions à l’époque et il a trouvé 288 images supplémentaires et les a liées à travers 735 autres messages.
- Je lui ai juste jeté des répertoires et des fichiers zip de sauvegarde et il a trié et trouvé toutes sortes de choses et les a câblées directement
- Malheureusement, il n’a pas pu faire grand-chose pour les plus de 7 000 qui étaient sur Photobucket
- A récupéré 780 autres images liées à chaud (hotlinked)
- A récupéré 143 des 159 noms d’utilisateur qui avaient été précédemment supprimés et n’apparaissaient que comme « system »
- A également trouvé leurs avatars
- Il a même trouvé mon ancien avatar, une photo du meilleur bon garçon de tous les temps !
- A censuré plus de 5 000 mots « collégiaux » affectueusement connus sous le nom de : LE RAPPORT DE DIFFAMATION (THE SLUR REPORT)
- A créé de nouveaux logos basés sur d’anciens fragments qu’il avait à partir des fichiers
- A récupéré tous les émoticônes classiques de vbulletin et les a liés à tous les messages
- Il a rapporté que :flipoff2: était l’émoticône la plus utilisée (19 191 occurrences), suivi par :rolleyes : et :beer : (suiveurs éloignés)
- A permis une recherche et un remplacement de noms, de numéros de téléphone ou d’e-mails qui étaient publics.
- M’a guidé à travers le passage à l’API Resend
- M’a guidé à travers la configuration SSL
- M’a guidé à travers la configuration CORS
- Puis, avant d’aller trop loin, il a exécuté une analyse ClamAV sur tous les fichiers
Il a fonctionné en arrière-plan pendant près d’une semaine, par intermittence au cours de plusieurs sessions. C’est une fenêtre amusante sur le passé alors que nous trouvons des photos et des détails sur les voyages et les projets.
Je suis également très impressionné qu’il y ait des humains qui sachent ce que cela fait…
Permettre à Claude d’exécuter 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”?
Extrêmement impressionnant.
Enfin, je voulais juste partager au cas où cette idée pourrait aider à déclencher quelque chose d’amusant pour quelqu’un d’autre. Faites une bonne sauvegarde et lancez-vous !
Bon Discourse’n. ![]()
