Giter Site home page Giter Site logo

digihunch / orthweb Goto Github PK

View Code? Open in Web Editor NEW
21.0 3.0 15.0 1.46 MB

Orthanc on AWS with Infrastructure as Code

Home Page: https://www.digihunch.com/tag/orthanc/

License: Apache License 2.0

HCL 86.85% Shell 13.15%
orthanc dicom tls terraform docker aws cloud-init cfn-init medical-imaging envoy

orthweb's Introduction

Orthweb - Orthanc on AWS

Docker Terraform Postgres envoybadge Linux AWS License Latest Release

Overview

Orthweb helps imaging IT administrators operationalize Orthanc on AWS. It proposes a self-contained architecture, and accelerates the deployment of it. Bring your own AWS account, and Orthweb help you set up Orthanc server in half an hour, ready to serve HTTP and DICOM traffic.

The Orthweb project proposes an architecture that involves numerous underlying cloud resources in AWS (e.g. VPC, subnets, Secret Manager, RDS, S3) with security, automation and high availability in consideration. Orthweb orchestrate these resources with Infrastructure as Code in Terraform.

On top of the infrastructre, Orthweb also automatically configures the hosting of Orthanc application with Docker, using the Orthanc image released by Osimis. For those who need to host Orthanc on Kubernetes, check out Orthweb's sister project Korthweb.

The Orthweb documentation includes a step-by-step guide for deployment and more details about the architecture.

orthweb's People

Contributors

digihunch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

orthweb's Issues

Better way to SSH to an instance

Currently, Orthweb configures RSA key pair for user to SSH to instance. This step is a little involving:

  1. To SSH in, user has to create a key pair. That turns out to be a distractive step in user's experience.
  2. A separate public IP has to be prepared for each instance, making a total of 3 elastic IPs.
  3. Bastion host as a potential alternative would consume extra computing $$$
  4. port 22 has to remain open on the internet.

Currently CloudShell does not connect to instances in VPC. System Manager might be a better fit.

Secret logistics for RDS

Currently Orthweb generates DB secret and stores it to Secret Manager in AWS.

Secret Manager is more expensive than Secure string in System Manager Parameter store

  • If continue using Secret Manager, it should be rotated and update to Docker compose
  • If secret is intended to be static, use Parameter store instead.

postgres authentication

currently password is used to authenticate
need to add IAM role authentication on top of it for maximum security

Multi-az HA using elastic IP

  1. introduce an Elastic IP and use its DNS name for HTTPS and DICOM TLS traffic
  2. re-configure certificate for elastic IP. Similar to any public IP, an elastic IP also comes with a DNS name ec2-a-b-c-d.compute-1.amazonaws.com
  3. introduce a second EC2 instance in the 2nd public subnet. Use public IP of the instances for SSH only.
  4. test the process to re-attach elastic IP.
  5. update chart.

open issues

  1. VPC flow log to s3 bucket -> done
  2. s3 access log to s3 bucket -> done
  3. database log to cloud watch -> done
  4. IMDS v2 support (s3 permission) -> done
    5. semantic version release

Error during stack creation


│ Error: Secrets Manager Secret "arn:aws:secretsmanager:us-east-1:434082930953:secret:DatabaseCreds96ea1f2a0c7f35c6-HunT6u" Version "AWSCURRENT" not found

│ with data.aws_secretsmanager_secret_version.creds,
│ on secret.tf line 30, in data "aws_secretsmanager_secret_version" "creds":
│ 30: data "aws_secretsmanager_secret_version" "creds" {

Terraform error during plan and apply - invalid index for availability_zones.available.names

Hello,

Disclaimer - I'm new to terraform. When I run terraform plan everything looks good except at the very end I see this error below.

Changes to Outputs:

  • s3_bucket = (known after apply)

    │ Error: Invalid index

    │ on modules/network/main.tf line 39, in resource "aws_subnet" "publicsubnet2":
    │ 39: availability_zone = data.aws_availability_zones.available.names[2]
    │ ├────────────────
    │ │ data.aws_availability_zones.available.names is list of string with 2 elements

    │ The given key does not identify an element in this collection value: the given index is greater than or equal to the length of the collection.


    │ Error: Invalid index

    │ on modules/network/main.tf line 55, in resource "aws_subnet" "privatesubnet2":
    │ 55: availability_zone = data.aws_availability_zones.available.names[2]
    │ ├────────────────
    │ │ data.aws_availability_zones.available.names is list of string with 2 elements

    │ The given key does not identify an element in this collection value: the given index is greater than or equal to the length of the collection.

The instructions didn't mention to do any updates to the data.tf file, but I did try and update that anyway with some values for aws_availability_zones and aws_region, however, when I then tried terraform plan again it complained that data should not be tampered with and is actually supposed to be filled in by the terraform process.

Any idea clue or suggestions regarding this error?

Thank you.

Document network route

Document network route, for example:

  • access to S3 (PHI) goes through private endpoint
  • access to system manager (management traffic) goes through public network

Error downloading zip folder

"When I attempt to download either a ZIP folder ("Download ZIP") or DICOM directory ("Download DICOMDIR"), the download briefly starts but then fails with a Network error. "

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.