The installation is trivial. Download the tgz file, unzip it, untar the resulting file wherever you want.
Then there's the startup command:
AWS_ACCESS_KEY_ID=admin \
AWS_SECRET_ACCESS_KEY=secret \
S3_BUCKET=my-bucket \
./weed mini -dir=/data(-dir=/where/the/data/should/go)
This starts the service with some defaults for a tiny space. ("mini")
Make sure that "/data" exists with proper permissions.
I did the install on an HP DL380 Gen 7 with Ubuntu 25 Server. It's not a super-powered machine, but this is just "mini". Will use bigger machine shortly.
This is just for test purposes, you don't want to try to do anything serious/real with "mini". You want to kick the tires. Partly because those are TERRIBLE credentials, and partly because this starts up with a 30GB max space. Kick the tires.
There are multiple web-page interfaces for it:
Obv of course you should use the IP of the server instead of "localhost".There are some config files to work with on this. The web interface is a lot better at showing you things than it is at letting you change them.
Filer UI is like DropBox in terms of casual file storage in a folder hierarchy. This is the first part I tested.
Basically I just wanted to see if this did what I was expecting, which it did.
The "Admin/Dashboard" is pretty busy.To do some REAL work, a REAL system, use "master" instead of "mini":
./weed master
That's the big one. Also: do this on a machine with a bunch of storage. I am arranging that shortly.
On other machines, you want to also install Seaweed FS, but you will use "volume" instead of "master".
./weed volume -dir="other/machine/file/space/" -max=10 -master="192.168.1.21:9333"
---------------------------------------------------
First step was to configure hardware. See "underlaying steps", below, for details. This was non-trivial, but entirely separate from Seaweed.
Second step was install Proxmox as host OS. This is straightforward, I have done this probably 25 times now. This is using Proxmox 9.2, the latest as of this writing.
Next step was to create the VMs. In Proxmox I created one, converted it to a template, and then created the rest of them. I forgot that I needed to do some work before turning it into a template. Always you do
sudo apt update
sudo apt upgrade
which I did, but I forgot about setting static IPs on there. You have to fix each VM anyway, but if you do the template first, it's a lot easier. I also should have downloaded seaweed into the original before making the template. Oh well, all set now.
I also set the VMs to auto-start at boot time. I don't want to be doing that by hand ever again. I wish the Proxmox default had that turned on.
Having configured the hardware with big disks, I downloaded Seaweed onto all the VMs. I used "linux-full-amd64.tar.gz". That unpacks into a single executable that is the entirety of Seaweed.
./weed master
then i looked at the web-page for it, at swhost:9333, which doesn't work. Need to do a total reboot.
Now we are good:
OK. Halt 'weed'. Then 'sudo mv weed /usr/local/bin/'
Now need to do setup for seaweed to auto-start at reboot. It would be better to do this via systemctl, but I didn't get that to work for some reason. I used crontab in the end, with
@reboot weed master
Reboot a couple times just to be sure, and all is good.
---------------------------------------------------------------
There are some underlying steps you need to make, configuring the hardware and VMs.
The hardware arrangement I have for testing is a single server with 4x16TB HDD. I wondered about how to RAID them, with a 1+0 being the most obvious, but also the most space-wasteful. Other choices like R6 weren't really any better, with only 4 drives. Someone suggest I go with a different approach, where Seaweed itself is providing the redundancy.
One VM runs SW Master. Four VMs run SW Volumes. Configure SW for the amount of redundancy desired, and you have a total a 64 TB
Here's how to configure the host and the VMs. Took a while to get the right info, watch the right videos, deal with the ESL accents.
<picture>
The machine: 1 HP DL 360 G9 4 LFF 128 GB RAM 2x 2640 CPU, + 2x512GB SSD + 2x128GB SSD.
It has a fiber card too, which is not relevant to this writeup:
(Interestingly, this machine includes an internal SSD cage for 4 SSDs. I had two pairs of matching SSDs, so they are /dev/sda (2x512GB) and /dev/sdb (2x128GB), both configured as RAID 1, where "sda" holds the host OS. I had never seen this cage before.)
The blue are the top two SSDs. There's another pair underneath. This takes special SATA cables to use them, for both power and data. I imagine those come with the cage. The silver cables are data, if you trace them out you can see they plug into the RAID controller. The data cable looks standard, I think I have a couple more of them acquired elsewhere for a different reason; the power cable looks custom to this machine.
The host OS here is ProxMox, so that I can create these VMs all on this one machine. IRL, in the Data Center, I wouldn't do that, each Master and Volume would be separate machines, with Seaweed running in the host OS, not a VM. Probably doing that soon.
But for this investigation...VMs.
Once Proxmox is installed you are going to create 5 VMs. These VMs are going to live inside the 512GB RAID volume, so they need to be no bigger than 80GB when you create them. This is a standard procedure with Prox, not covered here.
Once that is done, using Ubuntu 24 as their OS, need to tell Prox how to make the 16T disks available.
This is done by using the DISK ID rather than "/dev/sdc" names, lest an accident of timing during boot shift those around a little.
At the command line:
ls -n /dev/disk/by-id/ <return>
and you get this (and probably a lot more)
lrwxrwxrwx 1 0 0 9 May 27 08:02 scsi-3600508b1001c710b4c7493cf3630fb6f -> ../../sdc
lrwxrwxrwx 1 0 0 9 May 27 08:02 scsi-3600508b1001cd17c6f7fea6ce6d097d5 -> ../../sdd
lrwxrwxrwx 1 0 0 9 May 27 08:02 scsi-3600508b1001cc9fc14dafef1c4174c23 -> ../../sde
lrwxrwxrwx 1 0 0 9 May 27 08:02 scsi-3600508b1001c801d4521682fac529211 -> ../../sdf
those are the 4x16T drives.
/sbin/qm set <vm_number> -scsiN /dev/disk/by-id/scsiNNNNNNNNNNNN
is the generic command. You will have to fill in the blanks of <vm_number>, scsiN, and the disk ID.
-scsiN specifies the interface used and N is just a made up number, a single-digit in my case.
Ultimately:
/sbin/qm set 102 -scsi2 /dev/disk/by-id/scsi-3600508b1001c710b4c7493cf3630fb6f
/sbin/qm set 103 -scsi3 /dev/disk/by-id/scsi-3600508b1001cd17c6f7fea6ce6d097d5
/sbin/qm set 104 -scsi4 /dev/disk/by-id/scsi-3600508b1001cc9fc14dafef1c4174c23
/sbin/qm set 105 -scsi5 /dev/disk/by-id/scsi-3600508b1001c801d4521682fac529211
This attaches one drive to each of the four VMs (102-105). They will show up as /dev/sdb.
For each VM you will do standard things:
sudo mkfs -t ext4 /dev/sdb
sudo mkdir /mnt/data
sudo chmod a+rwx /mnt/data
sudo mount -t ext4 /dev/sdb /mnt/data
df -k
will verify that all is good:
and finally edit /etc/fstab for a permanent mount:
/dev/sdb /mnt/data ext4 defaults 0 0
sudo mount -a
sudo systemctl daemon-reload
At least as of PM 9.2 the PM GUI doesn't help you do this. It's not hard, per se, but there's clearly a good bit of mechanics.
End result: I have four VMs each with local disk of 60GB and each one has a locally mounted 16TB disk for data. Because those disks are local this is as fast as its going to get.
(if your VMs will run Windows, instead of -scsiN you will use -virtioN instead of -scsiN, and you're going to need a special software driver acquired separately from ProxMox. I wasn't doing this)