TechVikingAS
Oslo --:-- Operational

Documentationrev. 28.07.2026

Documentation

The whole thing fits on one page. If you cannot find an answer here, write to hjelp@techviking.cc and we will add it.

Quickstartabout 4 minutes

Getting a bucket

Create an access key in the console, then point any S3 client at a regional endpoint. Signature version 4 is required and version 2 is not accepted. Region strings are the same as the endpoint host, for example no-osl-1.

export AWS_ACCESS_KEY_ID=TVK...
export AWS_SECRET_ACCESS_KEY=...

aws --endpoint-url https://s3.no-osl-1.techviking.cc \
    s3 mb s3://mitt-omrade

aws --endpoint-url https://s3.no-osl-1.techviking.cc \
    s3 cp rapport.pdf s3://mitt-omrade/2026/

Bucket names are global across TechViking, between 3 and 63 characters, lowercase, and may contain digits, hyphens and dots. Names containing dots cannot be used with virtual-hosted addressing over TLS, because the wildcard certificate covers one label only.

Endpoints

Each region has its own host. There is no global endpoint that redirects, and a request to the wrong region returns 301 PermanentRedirect with the correct host in the body rather than following it for you.

s3.no-osl-1.techviking.cc     Oslo, multi-zone
s3.no-osl-2.techviking.cc     Oslo, single zone
s3.no-svg-1.techviking.cc     Stavanger, multi-zone
s3.no-trd-1.techviking.cc     Trondheim, archive
kms.no-osl-1.techviking.cc    key management
dl1.techviking.cc             public objects

The download host, dl1.techviking.cc, serves objects from buckets whose policy allows anonymous GetObject. It supports HTTP range requests and resumable transfers, does not require a signature, and is the right endpoint for release artefacts, package mirrors and public datasets. It does not accept writes.

Storage classesBerg, Fjord, Skjær, Sval

Choosing a class

Set the class per object with x-amz-storage-class, or let a lifecycle rule move it later. Changing class is a copy, so it costs a full month minimum on the destination class.

PUT /mitt-omrade/arkiv.tar.zst HTTP/1.1
Host: s3.no-trd-1.techviking.cc
x-amz-storage-class: SVAL

SVAL objects are not readable until restored. Issue RestoreObject and wait between four and twelve hours, then read normally for as many days as you asked for. Restore requests are not billed; the restored copy is billed as FJORD for the days it exists.

Object lock

Object lock has to be enabled when the bucket is created, and cannot be added afterwards. This is an S3 constraint and we did not invent it.

In governance mode, a user holding s3:BypassGovernanceRetention can shorten or remove a retention period. In compliance mode nobody can, which includes us, which includes us when handed a court order. Choose compliance mode only when that is genuinely what you want. Several customers have locked seven-year retention onto a bucket by accident and had to pay for it to the end.

Lifecycle rules

Rules are evaluated once a day, shortly after 02:00 CET. A rule can transition between classes, expire current versions, expire non-current versions after a number of days, or abort incomplete multipart uploads. Run a rule with DryRun first and you get back the list of keys it would have touched, up to 10 000 of them.

Encryption

Everything is AES-256 at rest whether you ask for it or not. If you want to hold the key, send it per request with SSE-C and we will not store it; if the key is wrong on read, you get 403 and no further hint. If you want key management with an audit trail, create a key in the regional KMS and reference it with SSE-KMS. KMS keys never leave the region they were created in, so a Stavanger key cannot decrypt an Oslo object.

Service limitsraise on request

Limits, and which of them we will raise.

Anything marked soft is a safety rail rather than a technical ceiling. Ask and it moves, usually the same day.

LimitValueKindNote
Object size5 TBhardmultipart above 5 GB
Part size5 MB to 5 GBhardlast part may be smaller
Parts per upload10 000hardS3 compatibility
Buckets per account1 000softask
Objects per bucketunlimitedhardlisting stays paginated
Request rate, per prefix7 000 /ssoftshard the prefix first
Lifecycle rules per bucket200softask
Retention, compliance mode100 yearshardplease do not

Rate limits return 503 SlowDown with a Retry-After header. Back off and retry; do not open more connections, which is the usual reflex and makes it worse.

Migrating infree above 50 TB

Moving from somewhere else

For anything under a few terabytes, rclone between the two providers is the shortest path and needs no help from us.

rclone sync s3-old:gammel-bucket techviking:ny-bucket \
    --transfers 16 --checkers 32 --checksum \
    --s3-storage-class FJORD --progress

Above 50 TB, tell us first. We will provision a temporary ingest key with a raised rate limit, waive the first month of storage, and watch the transfer with you. The usual bottleneck is the egress bill on the side you are leaving, not our side, and it is worth calculating that before you start.

For datasets where the network is genuinely the problem, we accept disks. Post encrypted drives to the Oslo address, we copy and return them, and the service costs kr 4 900 per shipment regardless of how many drives are in it. LUKS, VeraCrypt and BitLocker are all fine. Send the passphrase separately, and not by email.

Questions we gethonestly answered

Is this actually S3, or a subset?

It is the S3 API surface that matters for storage, and not the parts that belong to other AWS services. Present: multipart, versioning, lifecycle, object lock, replication, presigned URLs, bucket policies, CORS, event notifications, SSE-C and SSE-KMS. Absent: S3 Select, Glacier vault operations, requester pays, transfer acceleration, access points, and anything involving Lambda. If your tool calls something we do not implement, you get 501 NotImplemented rather than a wrong answer.

What happens if TechViking goes out of business?

A fair question that most suppliers dodge. Our terms commit us to 90 days of read-only availability after any notice of wind-down, and an escrow arrangement with our legal counsel funds that period in advance. It is in section 11 of the terms. It would not cover a sudden bankruptcy, and we are not going to pretend otherwise.

Do you have an SLA?

99,9 % monthly availability on Standard classes, 99,5 % on Sval, measured per region as successful requests over total valid requests. Below target you get service credits: 10 % of the month for the first band, 30 % below 99,0 %, and 100 % below 95,0 %. Credits are applied automatically when our own monitoring sees the breach, so you do not have to file a claim to get them.

Can I get a copy of your ISO 27001 certificate?

Yes. Write to sikkerhet@techviking.cc. Scope covers the platform and the Oslo office. The statement of applicability and the last surveillance audit report are available under NDA.

Why are the internal names Norse?

Because each one is accurate for the thing it names, and because a name people remember is worth more than a version number. Gleipnir bound something that could not be bound. Draupnir made copies of itself on a schedule. The three Norns are the past, the present becoming, and what is owed. If you find that irritating, the API also accepts the plain names, and the docs list both.

Is there a free tier?

No. There is a 30 day trial with 500 GB and no card required, and after that you pay per GB from the first one. Free tiers make people build things they later have to unbuild.