Bei den aktuellen RAM-Preisen würde ich icht geizen, je mehr je besser…
USB: Ich würde nichts mehr kaufen an Mainboard was nicht auch USB 3.0 hat. Das wird bei externen Festplatten (wenn 3.0er mal state-of-the-art werden) auch kein Allheilmittel sein, aber wenn es dir z.B. beim Fileserver auf Geschwindigkeit ankommt dann ist bei Gigabit-LAN die USB(-2.0)-Platten schon ein Flaschenhals. Ggf. dann eine konsequete Nutzug von eSata. Aber für daheim..., mir reichen immer noch die ~11MB/s bei 100MBit.
Gruppen: Prinzipiell (zumindest mit apache als Webserver unter default-Archlinux) spricht nichts dagegen, die http-Gruppe als diejenige zu nutzen, über die User html-Seiten verwalten können. Aber ;-) (ich erkläre es generell immer so):
a) Gruppen < gid 100 sind sog. "Systemgruppen" (genauso wie es "Systemuser" wie User http gibt). Diese Gruppen sind eigentlich nicht dafür gedacht normale User aufzunehmen, sondern eher andere Systemuser.
Beispiel: Mailserver und Virenscanner - der Mailserver läuft unter dem User mail und legt Dateirechte (Logs, DBs, usw) mit mail:mail an. Der Virenscanner läuft unter dem User clamav und muß auch Zugriff auf Files/Order des Mailservers haben. Hier würde man nun u.U. den Systemuser clamav in die Systemgruppe mail stecken um das zu ermöglichen. Ich würde immer nach einer anderen Lösung suchen (oder hellhörig werden) wenn ich Normaluser in solche Systemgruppen packen müßte um etwas Bestimmtes zu erreichen. Sonst hat ein User ganz schnell Rechte die er eigentlich nicht benötigt (Logfiles z.B., unter Umständen Configfiles)
b) Eine sinnvollere Lösung wäre evtl. das Anlegen einer eigenen Gruppe (wwwdata z.B.) und den User da hineinzupacken. Die Grund-Ordner/Dateistruktur könnte dann z.B. so aussehen:
drwxrwxr-x root wwwdata /srv/http/
drwxrwxr-x deinusername wwwdata /srv/http/unterverzeichniss-fuer-projekt/
-rw-rw-r-- http wwwdata /srv/http/index.html
Weltlesbar muß die Struktur deshalb sein, damit der User http (der "Webserver") die Daten lesen kann. Wenn weltlesbar eher nicht erwünscht ist, dann packt man den Systemuser http in die Gruppe wwwdata und kann dann eigentlich überall weltlesbar (also alles im Rechte-triple other) entziehen, z.B. statt
drwxrwxr-x deinusername wwwdata /srv/http/unterverzeichniss-fuer-projekt/
dann
drwxrwx--- deinusername wwwdata /srv/http/unterverzeichniss-fuer-projekt/
So wäre sichergestellt daß andere User die html-Files, Skripte, php/ruby-code etc. nicht einsehen können. Sondern halt nur noch root, der Ersteller(=deinuserame) und Mitglieder in wwwdata(hier dann auch der Systemuser http).
Das wäre so grob was ich allgemein in punkto Rechteverwaltung für so einen Dienst/Verfahren machen würde.