Skip to content

7. First tenant

This is the acceptance test for the whole installation. If a server created here reaches the internet and is reachable from it, every layer works.

Sign in as a platform operator and create one. Give it a short name — it appears in resource names so that Proxmox stays readable.

Invite the user who will own it.

Platform → IP Havuzları (Platform → IP pools). You need:

FieldValue
RegionThe region you prepared
CIDRYour routed public block
GatewayThe address on your edge that this block routes through
Block kindsubnet or slice — see below

The panel materialises one row per address.

  • subnet — the block is a real subnet. The first (network) and last (broadcast) addresses are excluded, as they must be.
  • slice — the block is carved out of a larger network upstream and routed to you. Every address is usable, including the first and last, because here they are not a network and a broadcast address; they are just addresses.

Choosing subnet for something that is actually a slice quietly costs you two addresses. Choosing slice for a real subnet hands out two addresses that will not work. If you are not sure, ask whoever routes the block to you whether it is a subnet on a segment or a routed slice.

Mark any address still referenced by something on your edge as reserved, so it is never handed out while you clean up.

3. Allocate an address to the organisation

Section titled “3. Allocate an address to the organisation”

From the pool, allocate one address. Allocation gives it to the organisation; attaching it to a machine is the tenant’s own step.

As the tenant now:

  1. Ağ → Özel Ağlar — create a network; an app subnet is created with it.
  2. Ağ → Ağ Geçidi → Kur — install a gateway on that subnet, using the allocated address.

This is the first real exercise of the whole stack: a virtual machine is cloned from your appliance template, receives a bootstrap identity, fetches its configuration, and configures forwarding.

If it never becomes ready, the cause is almost always one of: the template is missing or wrong in the region configuration, the appliance’s subnet cannot reach the panel, or the public address is not actually routed to the region.

Sunucular → Sunucu Oluştur, Ubuntu, smallest plan, that subnet.

Then, from its console:

Terminal window
curl -sS https://example.com -o /dev/null -w '%{http_code}\n' # expect 200
curl -sS https://ifconfig.me # expect the gateway's address

The second line is the whole point of the egress model: your tenant’s traffic leaves from their own address.

6. Attach a public address and check reachability

Section titled “6. Attach a public address and check reachability”

Attach a firewall allowing 22 from your own address, then attach a public address, then — from outside your network, not from your office

Terminal window
ssh ubuntu@<public-address>

Testing from inside the datacentre proves nothing about routing. This is the step that catches a block that was bridged rather than routed.

Delete the server. Confirm it enters the deletion buffer, then disappears when the buffer expires, and that the address returns to the organisation as free.

CheckConfirms
Server created and reachable on the consoleTemplates, cloning, cloud-init
Private address assignedAddress allocation and SDN
Outbound internet through the gatewayAppliance pipeline, routing, edge
Egress leaves from the tenant’s addressThe routed model, not shared NAT
Reachable from the internetThe block is genuinely routed
Firewall blocks what it shouldHypervisor-level enforcement
Deletion buffer behavesTwo-phase delete
Address returns as freeAllocation lifecycle

With all eight, the installation is working. Continue with Operations.