Giter VIP home page Giter VIP logo

ots-share-app's Introduction

favicon-3 OTS-Share (One-Time Secret Share)

A self-hosting app to share secrets only one-time.

Content

Features

  • Support both texts and small files (maximum 1MB).
  • Creates shareable links which valid for a maximum of 24 hours.
  • The contents are encrypted with AES in CBC mode, with a 256-bit key. (Using Crypto-js)
  • Passwords are NOT sent to the backend server.
  • The app periodically deletes encrypted content after it expires, and the encrypted content gets deleted once the web UI fetches it.
  • CLI support.
  • Multiple database connectivity support.
    • Mongo
    • Postgres
    • MySQL

How to run

With the default database

This application is entirely run in Docker and comes with Mongo 4.2 image. (view the docker-compose.yml for further reference.)

To execute this app, simply run following command.

make start

Without the default database

This application can connect to a external database. (Currently support Postgres and Mysql).

To execute this app, simply run following command.

# Set the connection string to your database.
export DB_URL=mysql://root:[email protected]:3306/ots_share

make start-no-db

OR

Change the modify the DB_URL variable under ots-share-run-no-db service in docker-compose.yml, and then run

make start-no-db

Access UI

After that, the application is accessible via http://localhost:8282

Request and Response

Request

Create record request body

A sample request body is as follows.

{
  "content": "U2FsdGVkX1+XUedzb2748LeKmf9UpN9hVWjBDUwJfXs=",
  "expireIn": {
    "value": 10,
    "unit": "minutes"
  }
}
Property type is required purpose
content string yes Encrypted content
expireIn object yes Expiration configurations
expireIn.value number yes numerical value of expiration. E,g 1, 2
expireIn.unit enum ('days', 'hours') yes Unit of expiration.
  • Sample Create request.

curl 'http://localhost:8282/api/record' -H 'Content-Type: application/json' \
 --data-raw \
 '{
    "content" : "U2FsdGVkX1+bozD8VjexiUeHJ3BfdxrXCmRyai8V0hY=",
    "expireIn": {
      "value": 1,
      "unit": "minutes"
    }
  }'
--compressed
  • Sample GET request.

curl 'http://localhost:8282/api/record/b2nC422huavXfMs2DWZ2Z9' -H 'Content-Type: application/json'

Response

A sample record body is as follows.

{
  "id": "iN2jS3y1pstio7JVXs1zLF",
  "slug": "iN2jS3y1pstio7JVXs1zLF",
  "content": "U2FsdGVkX1+XUedzb2748LeKmf9UpN9hVWjBDUwJfXs=",
  "expiary": "2023-02-12T14:55:41.510Z",
  "status": "avaiable",
  "created_at": "2023-02-12T14:45:41.521Z"
}
Property type is required purpose
id string yes Primary key of the record
slug string yes For future use (Primary key of the record)
content string yes Encrypted content
expiary string (Date) yes Expiration date and time
status enum ('avaiable', 'unavaiable') yes For future use.
created_at string (Date) yes Record created date

How to use

(Please don't lose the generated URL. There is no way to retrieve the content or regenerate the URL !!!)

For text

  1. Visit the landing page and select Text from top menu.
  2. Add your secret content to the Secret content text box.

text-1

  1. Click the Create Button.
  2. Copy the URL in the text box. (Click the Copy Icon). Screenshot (2)
  • (Please don't lose the generated URL. There is no way to retrieve the content or regenerate the URL !!!)
  1. Send the copied URL to the other party via a secure channel.

For files

  1. Visit the landing page and select File from top menu.
  2. Click on the "Drag 'n' drop" area or drag and drop a file.
  • (Pleas refer to screen regarding the file size limits).

    file-1

  1. Upload a file. file-2

  2. Click the Create Button.

  3. Copy the URL in the text box. (Click the Copy Icon). file-3

  • (Please don't lose the generated URL. There is no way to retrieve the content or regenerate the URL !!!)
  1. Send the copied URL to the other party via a secure channel.

View secret content in the shared link.

  1. Visit the shared link using a browser.
  2. You will see the following screen. Screenshot (3)
  3. Click Fetch Content.

For text

  1. You'll see the following screen. Screenshot (4)

  2. Click the "Click there to view the content".

  3. You will see the content as follows. Screenshot (5)

For files

  1. You'll see the following screen. file-4

  2. Click the "Click here to download the file" button to download the file.

Errors.

In case of an error, the following screen will appear.Screenshot (6)

CLI usage

  • Support only for texts.

  • You can use the CLI to utilize APIs.

  • Encryption using CLI

Sample CLI to use encryption
#!/bin/bash

# Configs
PASSWORD="pass-key"
OTS_SHARE_DOMIN="http://host.docker.internal:8282"

OTS_SHARE_API="$OTS_SHARE_DOMIN/api/record"

OPENSSL_PARAMETERS_PASSWORD="-pass pass:$PASSWORD"
OPENSSL_PARAMETERS_ALGORITHM="-base64 -aes-256-cbc -pbkdf2"

text_to_encrypt="test string to encrypt"

################
## Encryption ##
################

# Record expiration value. A numerical value
RECORD_EXPIRATION_VALUE=10
# Record expiration unit. It can be "minutes" or "hours"
RECORD_EXPIRATION_UNIT="minutes"

# 1. Generate encrypted string
encrypted_content=$(echo $text_to_encrypt | openssl enc -e $OPENSSL_PARAMETERS_ALGORITHM $OPENSSL_PARAMETERS_PASSWORD)

# 2. Make API call OTS-Share and retrieve the Id
# We need this id for encryption
record_id=$(\
curl -s "$OTS_SHARE_API" \
-H 'Content-Type: application/json' \
--data-raw \
'{ "content" : "'$encrypted_content'", "expireIn": { "value": '$RECORD_EXPIRATION_VALUE', "unit": "'$RECORD_EXPIRATION_UNIT'" }}' \
--compressed \
| jq '.id' \
| tr -d '"' \
)
#### Encryption results
echo "!!! Keep these safe !!!"
echo "-----------------------------------"
echo "Record id: $record_id"
echo "Password: $PASSWORD"
echo "-----------------------------------"
echo "(This record will expires in: $RECORD_EXPIRATION_VALUE $RECORD_EXPIRATION_UNIT)"
Output encryption
!!! Keep these safe !!!
-----------------------------------
Record id: b2nC422huavXfMs2DWZ2Z9
Password: pass-key
-----------------------------------
(This record will expires in: 10 minutes)
  • Decryption using CLI
Sample CLI to use Decryption
#!/bin/bash

# Configs
PASSWORD="pass-key"
OTS_SHARE_DOMIN="http://host.docker.internal:8282"

OTS_SHARE_API="$OTS_SHARE_DOMIN/api/record"

OPENSSL_PARAMETERS_PASSWORD="-pass pass:$PASSWORD"
OPENSSL_PARAMETERS_ALGORITHM="-base64 -aes-256-cbc -pbkdf2"

$record_id="b2nC422huavXfMs2DWZ2Z9" # ID from previous encryption operation

################
## DECRYPTION ##
################

# 1. Fetch content
content=$(\
curl "$OTS_SHARE_API/$record_id" \
-s -H 'Content-Type: application/json' \
--compressed \
| jq '.content' \
| tr -d '"' \
)

# 2. Decrypt
decrypted_content=$(echo $content | openssl enc -d $OPENSSL_PARAMETERS_ALGORITHM $OPENSSL_PARAMETERS_PASSWORD)

echo "-----------------------------------"
echo "Content: $decrypted_content"
echo "-----------------------------------"
Output decryption
-----------------------------------
Content: test string to encrypt
-----------------------------------

Change configurations

All the configurations are mentioned in the docker-compose.yml under or ots-share-run-no-db service.

  • Change default port to access the application are available in docker-compose.yml under ots-share-run or ots-share-run-no-db service.
  • You can modify the mongo-local service in docker-compose.yml to keep the data persistent.

Change database server.

  • Please change the DEV_PORT variable the docker-compose.yml under ots-share-run or ots-share-run-no-db service.

  • Please change the DEV_PORT variable the docker-compose.yml under ots-share-run-no-db service to connect to external database.

  • DB_URL must be a connection string.

    • The app parse the DB_URL as an URL and use the protocol to identify the database driver.
    • sample connection strings:

Change the default server port.

  • Please change SERVER_PORT variable in the in docker-compose.yml under ots-share-run or ots-share-run-no-db service.

Change the purge process interval.

  • Default value is 1 minute.
  • Please set PURGE_TRIGGER_INTERVAL variable in the in docker-compose.yml under ots-share-run or ots-share-run-no-db service.
  • The PURGE_TRIGGER_INTERVAL value must be in milliseconds.

Tech stack

  • UI:

    • React
    • Material UI
  • Server:

    • Typescript
    • Node
    • Express
  • DB support:

    • MongoDB - (default DB)
    • Postgres
    • MySQL

Using with deploy tools

  • Step 1 & 2. step1

  • Step 3. step 2

  • Press Deploy the stack to deploy.

Format of the generated URL

The URL format, which required sending to the other party, is as follows. The id received from the backend API gets concatenated with the password. After that, the contaminated string gets encoded into Base 58.

The format is as follows.

  • <hosted-domain>/r/Base58Encoded(id-from-api : password : type : file-name)
  • Possible values for type is 'text' or 'file'.
  • type and file-name is optional.
  • type is default to text if not mentioned.
  • file-name is available for file.
  • It supports Base 64 encoding.

Road map

  • A Chrome extension
  • A Slack app

Todo

  • Add Contribution instructions.
  • Learn more ReactJs. ๐Ÿ˜„
  • Fix any bugs. ๐Ÿ˜„

ots-share-app's People

Contributors

aman7123 avatar rpgeeganage avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

ots-share-app's Issues

nice work

Hey, nice one with this app, I think the idea is very awesome, also you've put a lot of work into it and the prototype works - kudos. Now, I'd love to see a postgres version of it. Also, is adding fileshare possible easily? Can I help somehow?

Error building in portainer

System: VM
OS: Ubuntu 22.04
RAM: 8gb
Drive: 60GB

Manager: Portainer Community Edition 2.17.0

Issue:

Attempting to build a stack in new portainer. No other containers or software running on system. When building the following error was received.

failed to deploy a stack: ots-share-mongo-local Pulling 456d651ccb27 Pulling fs layer 0d873b46166f Pulling fs layer b700537f311e Pulling fs layer 8ba0f53e4854 Pulling fs layer 80b58c92c83f Pulling fs layer f4ed2f74d01b Pulling fs layer 0a2bd86063a1 Pulling fs layer 9d3479b42a1a Pulling fs layer 59e7441cc47f Pulling fs layer f4ed2f74d01b Waiting 0a2bd86063a1 Waiting 9d3479b42a1a Waiting 59e7441cc47f Waiting 8ba0f53e4854 Waiting 80b58c92c83f Waiting 0d873b46166f Downloading [===================> ] 757B/1.957kB 0d873b46166f Downloading [==================================================>] 1.957kB/1.957kB 0d873b46166f Verifying Checksum 0d873b46166f Download complete b700537f311e Downloading [> ] 77.54kB/7.59MB 456d651ccb27 Downloading [> ] 277.8kB/26.71MB 456d651ccb27 Downloading [========> ] 4.725MB/26.71MB b700537f311e Downloading [==============> ] 2.211MB/7.59MB 8ba0f53e4854 Downloading [> ] 13.69kB/1.258MB 456d651ccb27 Downloading [======================> ] 11.93MB/26.71MB 8ba0f53e4854 Downloading [====================> ] 524.3kB/1.258MB 8ba0f53e4854 Downloading [==================================================>] 1.258MB/1.258MB 8ba0f53e4854 Verifying Checksum 8ba0f53e4854 Download complete b700537f311e Verifying Checksum b700537f311e Download complete 456d651ccb27 Downloading [========================================> ] 21.4MB/26.71MB 456d651ccb27 Verifying Checksum 456d651ccb27 Download complete 456d651ccb27 Extracting [> ] 294.9kB/26.71MB 80b58c92c83f Downloading [==================================================>] 149B/149B 80b58c92c83f Verifying Checksum 80b58c92c83f Download complete f4ed2f74d01b Downloading [==========================> ] 757B/1.449kB f4ed2f74d01b Downloading [==================================================>] 1.449kB/1.449kB f4ed2f74d01b Verifying Checksum f4ed2f74d01b Download complete 456d651ccb27 Extracting [================> ] 8.552MB/26.71MB 0a2bd86063a1 Downloading [==================================================>] 258B/258B 0a2bd86063a1 Verifying Checksum 0a2bd86063a1 Download complete 456d651ccb27 Extracting [===============================> ] 16.81MB/26.71MB 59e7441cc47f Downloading [=============> ] 1.369kB/4.962kB 59e7441cc47f Downloading [==================================================>] 4.962kB/4.962kB 59e7441cc47f Verifying Checksum 59e7441cc47f Download complete 9d3479b42a1a Downloading [> ] 540kB/129.9MB 456d651ccb27 Extracting [=============================================> ] 24.48MB/26.71MB 9d3479b42a1a Downloading [==> ] 6.433MB/129.9MB 456d651ccb27 Extracting [==================================================>] 26.71MB/26.71MB 456d651ccb27 Pull complete 0d873b46166f Extracting [==================================================>] 1.957kB/1.957kB 0d873b46166f Extracting [==================================================>] 1.957kB/1.957kB 9d3479b42a1a Downloading [======> ] 16.06MB/129.9MB 9d3479b42a1a Downloading [=========> ] 24.6MB/129.9MB 9d3479b42a1a Downloading [=============> ] 34.24MB/129.9MB 0d873b46166f Pull complete b700537f311e Extracting [> ] 98.3kB/7.59MB 9d3479b42a1a Downloading [=================> ] 44.96MB/129.9MB b700537f311e Extracting [===================> ] 2.949MB/7.59MB 9d3479b42a1a Downloading [=====================> ] 54.61MB/129.9MB b700537f311e Extracting [==================================================>] 7.59MB/7.59MB 9d3479b42a1a Downloading [=========================> ] 66.41MB/129.9MB b700537f311e Pull complete 8ba0f53e4854 Extracting [=> ] 32.77kB/1.258MB 9d3479b42a1a Downloading [=============================> ] 76.06MB/129.9MB 8ba0f53e4854 Extracting [==================================================>] 1.258MB/1.258MB 8ba0f53e4854 Pull complete 80b58c92c83f Extracting [==================================================>] 149B/149B 80b58c92c83f Extracting [==================================================>] 149B/149B 9d3479b42a1a Downloading [=================================> ] 87.86MB/129.9MB 80b58c92c83f Pull complete f4ed2f74d01b Extracting [==================================================>] 1.449kB/1.449kB f4ed2f74d01b Extracting [==================================================>] 1.449kB/1.449kB 9d3479b42a1a Downloading [======================================> ] 99.65MB/129.9MB f4ed2f74d01b Pull complete 0a2bd86063a1 Extracting [==================================================>] 258B/258B 0a2bd86063a1 Extracting [==================================================>] 258B/258B 9d3479b42a1a Downloading [==========================================> ] 111.4MB/129.9MB 0a2bd86063a1 Pull complete 9d3479b42a1a Downloading [===============================================> ] 123.2MB/129.9MB 9d3479b42a1a Verifying Checksum 9d3479b42a1a Download complete 9d3479b42a1a Extracting [> ] 557.1kB/129.9MB 9d3479b42a1a Extracting [====> ] 10.58MB/129.9MB 9d3479b42a1a Extracting [========> ] 21.17MB/129.9MB 9d3479b42a1a Extracting [==========> ] 27.85MB/129.9MB 9d3479b42a1a Extracting [==============> ] 37.88MB/129.9MB 9d3479b42a1a Extracting [==================> ] 48.46MB/129.9MB 9d3479b42a1a Extracting [=====================> ] 55.71MB/129.9MB 9d3479b42a1a Extracting [==========================> ] 68.52MB/129.9MB 9d3479b42a1a Extracting [===============================> ] 80.77MB/129.9MB 9d3479b42a1a Extracting [===================================> ] 91.36MB/129.9MB 9d3479b42a1a Extracting [=======================================> ] 102.5MB/129.9MB 9d3479b42a1a Extracting [===========================================> ] 112MB/129.9MB 9d3479b42a1a Extracting [===============================================> ] 123.1MB/129.9MB 9d3479b42a1a Extracting [=================================================> ] 129.8MB/129.9MB 9d3479b42a1a Extracting [==================================================>] 129.9MB/129.9MB 9d3479b42a1a Pull complete 59e7441cc47f Extracting [==================================================>] 4.962kB/4.962kB 59e7441cc47f Extracting [==================================================>] 4.962kB/4.962kB 59e7441cc47f Pull complete ots-share-mongo-local Pulled Network test_default Creating Network test_default Created Container ots-share-mongo-local Creating Container ots-share-build Creating Container ots-share-run-db Creating Container ots-share-mongo-local Created Container ots-share-run Creating Container ots-share-build Created Container ots-share-run-db Created Container ots-share-run Created Container ots-share-run-db Starting Container ots-share-build Starting Container ots-share-mongo-local Starting Container ots-share-build Started Container ots-share-mongo-local Started Container ots-share-run Starting Container ots-share-run-db Started Error response from daemon: driver failed programming external connectivity on endpoint ots-share-run (71610a74ad90eba363966d87e093681a2dbf3eb6dfb02b2eda3786fac66640d8): Bind for 0.0.0.0:9898 failed: port is already allocated

Attempted Remediation:
Commenting out line 23

New error:

failed to deploy a stack: ots-share-mongo-local Pulling 456d651ccb27 Pulling fs layer 0d873b46166f Pulling fs layer b700537f311e Pulling fs layer 8ba0f53e4854 Pulling fs layer 80b58c92c83f Pulling fs layer f4ed2f74d01b Pulling fs layer 0a2bd86063a1 Pulling fs layer 9d3479b42a1a Pulling fs layer 59e7441cc47f Pulling fs layer f4ed2f74d01b Waiting 0a2bd86063a1 Waiting 9d3479b42a1a Waiting 59e7441cc47f Waiting 8ba0f53e4854 Waiting 80b58c92c83f Waiting 0d873b46166f Downloading [===================> ] 757B/1.957kB 0d873b46166f Downloading [==================================================>] 1.957kB/1.957kB 0d873b46166f Verifying Checksum 0d873b46166f Download complete b700537f311e Downloading [> ] 77.54kB/7.59MB 456d651ccb27 Downloading [> ] 277.8kB/26.71MB b700537f311e Downloading [=============> ] 1.974MB/7.59MB 456d651ccb27 Downloading [=============> ] 6.974MB/26.71MB b700537f311e Verifying Checksum b700537f311e Download complete 456d651ccb27 Downloading [=======================> ] 12.8MB/26.71MB 456d651ccb27 Downloading [===========================================> ] 23.08MB/26.71MB 456d651ccb27 Verifying Checksum 456d651ccb27 Download complete 80b58c92c83f Downloading [==================================================>] 149B/149B 80b58c92c83f Download complete 456d651ccb27 Extracting [> ] 294.9kB/26.71MB 456d651ccb27 Extracting [================> ] 8.552MB/26.71MB f4ed2f74d01b Downloading [==========================> ] 758B/1.449kB f4ed2f74d01b Downloading [==================================================>] 1.449kB/1.449kB f4ed2f74d01b Verifying Checksum f4ed2f74d01b Download complete 0a2bd86063a1 Downloading [==================================================>] 258B/258B 0a2bd86063a1 Verifying Checksum 0a2bd86063a1 Download complete 456d651ccb27 Extracting [==============================> ] 16.52MB/26.71MB 456d651ccb27 Extracting [=============================================> ] 24.18MB/26.71MB 59e7441cc47f Downloading [=======> ] 757B/4.962kB 59e7441cc47f Downloading [==================================================>] 4.962kB/4.962kB 59e7441cc47f Verifying Checksum 59e7441cc47f Download complete 9d3479b42a1a Downloading [> ] 540.7kB/129.9MB 456d651ccb27 Extracting [=================================================> ] 26.54MB/26.71MB 456d651ccb27 Extracting [==================================================>] 26.71MB/26.71MB 456d651ccb27 Pull complete 0d873b46166f Extracting [==================================================>] 1.957kB/1.957kB 0d873b46166f Extracting [==================================================>] 1.957kB/1.957kB 9d3479b42a1a Downloading [===> ] 8.567MB/129.9MB 9d3479b42a1a Downloading [=====> ] 15.02MB/129.9MB 9d3479b42a1a Downloading [=========> ] 23.59MB/129.9MB 0d873b46166f Pull complete b700537f311e Extracting [> ] 98.3kB/7.59MB 9d3479b42a1a Downloading [============> ] 32.72MB/129.9MB b700537f311e Extracting [===================> ] 2.949MB/7.59MB 9d3479b42a1a Downloading [===============> ] 40.23MB/129.9MB b700537f311e Extracting [==================================================>] 7.59MB/7.59MB 9d3479b42a1a Downloading [===================> ] 50.44MB/129.9MB 8ba0f53e4854 Downloading [> ] 13.69kB/1.258MB b700537f311e Pull complete 9d3479b42a1a Downloading [======================> ] 59.02MB/129.9MB 8ba0f53e4854 Downloading [=========================================> ] 1.039MB/1.258MB 8ba0f53e4854 Downloading [==================================================>] 1.258MB/1.258MB 8ba0f53e4854 Verifying Checksum 8ba0f53e4854 Download complete 8ba0f53e4854 Extracting [=> ] 32.77kB/1.258MB 8ba0f53e4854 Extracting [==================================================>] 1.258MB/1.258MB 8ba0f53e4854 Extracting [==================================================>] 1.258MB/1.258MB 9d3479b42a1a Downloading [===========================> ] 70.89MB/129.9MB 8ba0f53e4854 Pull complete 80b58c92c83f Extracting [==================================================>] 149B/149B 80b58c92c83f Extracting [==================================================>] 149B/149B 9d3479b42a1a Downloading [===============================> ] 80.56MB/129.9MB 80b58c92c83f Pull complete f4ed2f74d01b Extracting [==================================================>] 1.449kB/1.449kB f4ed2f74d01b Extracting [==================================================>] 1.449kB/1.449kB 9d3479b42a1a Downloading [===================================> ] 91.83MB/129.9MB f4ed2f74d01b Pull complete 0a2bd86063a1 Extracting [==================================================>] 258B/258B 0a2bd86063a1 Extracting [==================================================>] 258B/258B 0a2bd86063a1 Pull complete 9d3479b42a1a Downloading [========================================> ] 104.2MB/129.9MB 9d3479b42a1a Downloading [============================================> ] 116MB/129.9MB 9d3479b42a1a Downloading [================================================> ] 125.1MB/129.9MB 9d3479b42a1a Verifying Checksum 9d3479b42a1a Download complete 9d3479b42a1a Extracting [> ] 557.1kB/129.9MB 9d3479b42a1a Extracting [====> ] 10.58MB/129.9MB 9d3479b42a1a Extracting [========> ] 21.17MB/129.9MB 9d3479b42a1a Extracting [==========> ] 28.41MB/129.9MB 9d3479b42a1a Extracting [==============> ] 38.44MB/129.9MB 9d3479b42a1a Extracting [==================> ] 49.02MB/129.9MB 9d3479b42a1a Extracting [=====================> ] 55.71MB/129.9MB 9d3479b42a1a Extracting [==========================> ] 67.96MB/129.9MB 9d3479b42a1a Extracting [==============================> ] 80.22MB/129.9MB 9d3479b42a1a Extracting [==================================> ] 90.8MB/129.9MB 9d3479b42a1a Extracting [=======================================> ] 101.9MB/129.9MB 9d3479b42a1a Extracting [==========================================> ] 111.4MB/129.9MB 9d3479b42a1a Extracting [===============================================> ] 122.6MB/129.9MB 9d3479b42a1a Extracting [=================================================> ] 129.8MB/129.9MB 9d3479b42a1a Extracting [==================================================>] 129.9MB/129.9MB 9d3479b42a1a Pull complete 59e7441cc47f Extracting [==================================================>] 4.962kB/4.962kB 59e7441cc47f Extracting [==================================================>] 4.962kB/4.962kB 59e7441cc47f Pull complete ots-share-mongo-local Pulled failed to solve: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount4097888629/Dockerfile: no such file or directory

Context:

This is a new OS and portainer install. The initial concern was that the port in question was not bound. Checked with

sudo lsof -i -P -n | grep 9898

Nothing was listed.

Error while bringing up project: address already in use

Hey there! I am having an issue while setting up the project with the default database as either MongoDB is installed or isn't. I just want to make sure I have the error understanding correctly or if there is another fix before I do anything that may or may not mess up something on my system.

Here are the error logs:

make: [Makefile:16: build] Error 1 (ignored)
docker-compose -f ./docker-compose.yml run --service-ports --rm --name ots-share-run-app --entrypoint "npm run start" ots-share-run
Starting ots-share-mongo-local ... 
Starting ots-share-mongo-local ... error

ERROR: for ots-share-mongo-local  Cannot start service ots-share-mongo-local: driver failed programming external connectivity on endpoint ots-share-mongo-local (a52a7fa2ec0c1ca125cd030da00b47f8ec502990e88413f3bd32e1005e77e124): Error starting userland proxy: listen tcp4 0.0.0.0:27017: bind: address already in use

ERROR: for ots-share-mongo-local  Cannot start service ots-share-mongo-local: driver failed programming external connectivity on endpoint ots-share-mongo-local (a52a7fa2ec0c1ca125cd030da00b47f8ec502990e88413f3bd32e1005e77e124): Error starting userland proxy: listen tcp4 0.0.0.0:27017: bind: address already in use
ERROR: Encountered errors while bringing up the project.
make: *** [Makefile:45: execute] Error 1

Thank you in advance.

Updating with deployment tools does not work

System: VM
OS: Ubuntu 22.04.1
Management: Portainer 2.17.1

Issue:

Even when the stack is configured to follow main and the box is checked to allow auto updates at interval portainer is failing to detect the new versions being published. Manually syncing does not fix the issue though the following snippet is provided:

Redeploy from git repository
This stack was deployed from the git repository https://github.com/rpgeeganage/ots-share-app.git .

Update docker-compose.bundle.yml in git and pull from here to update the stack.

It looks like some mechanism is missing for "docker-compose.bundle.yml" that may trigger software like portainer to pull the entire repo. Perhaps a version?

Keep up the fantastic work.

Improve Accessibility for First-Time Users

Description:
Hey there, I've been exploring otshareapp and think it's a fantastic tool for sharing resources. However, I noticed that the initial setup and navigation might be a bit daunting for newcomers. I thought it might be helpful to introduce a guided tour or tooltips that highlight key features and functionalities.

To Reproduce:
After installing otshareapp, I found myself a bit confused about where to start and how to effectively use the app. The documentation is thorough, but a visual guide could make the onboarding process smoother.

Expected Behavior:
New users should feel confident navigating otshareapp right away, with clear indications of where to find essential features.

Actual Behavior:
While the app is powerful, the steep learning curve might discourage some users from fully utilizing its capabilities.

Additional Context:
I'm using otshareapp on both Windows and macOS. Streamlining the onboarding experience could significantly enhance user satisfaction and engagement.

How to Fix:
Implementing a short guided tour or tooltips that introduce users to the app's core features could greatly improve the user experience. This could be triggered upon first launch or after significant updates.

support for base url

Hi @rpgeeganage

I just tried to put ots behind a load balancer, and I'm getting lots of ERR_SSL_PROTOCOL_ERROR which normally means two things:

  • there's SSL/TLS connections being served in the app
  • appplication is doing lots of 307 requests cause it can't set proper base url (I can't see it anywhere in the code)

Would you have a moment to look at it pls ?

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.