Add base containers
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
storage
 | 
			
		||||
							
								
								
									
										17
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								README.md
									
									
									
									
									
								
							@@ -1,2 +1,19 @@
 | 
			
		||||
# Matrix Gateway
 | 
			
		||||
WIP project
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Setup dev environment
 | 
			
		||||
```
 | 
			
		||||
mkdir -p storage/postgres storage/synapse
 | 
			
		||||
docker compose up
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
URLs:
 | 
			
		||||
* Element: http://localhost:8080/
 | 
			
		||||
* Synapse: http://localhost:8448/
 | 
			
		||||
* OpenID configuration: http://127.0.0.1:9001/dex/.well-known/openid-configuration
 | 
			
		||||
 | 
			
		||||
Auto-created Matrix accounts:
 | 
			
		||||
 | 
			
		||||
* `admin1` : `admin1`
 | 
			
		||||
* `user1` : `user1`
 | 
			
		||||
							
								
								
									
										65
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,65 @@
 | 
			
		||||
# This compose file is compatible with Compose itself, it might need some
 | 
			
		||||
# adjustments to run properly with stack.
 | 
			
		||||
 | 
			
		||||
version: "3"
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  synapse:
 | 
			
		||||
    image: docker.io/matrixdotorg/synapse:latest
 | 
			
		||||
    user: "1000"
 | 
			
		||||
    # Since synapse does not retry to connect to the database, restart upon
 | 
			
		||||
    # failure
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    entrypoint: /bin/bash
 | 
			
		||||
    command: >
 | 
			
		||||
      -c "nohup bash -c 'sleep 10; /config/delayed_accounts_creation.sh' \&
 | 
			
		||||
        ./start.py"
 | 
			
		||||
 | 
			
		||||
    # See the readme for a full documentation of the environment settings
 | 
			
		||||
    # NOTE: You must edit homeserver.yaml to use postgres, it defaults to sqlite
 | 
			
		||||
    environment:
 | 
			
		||||
      - SYNAPSE_CONFIG_PATH=/config/homeserver.yaml
 | 
			
		||||
    volumes:
 | 
			
		||||
      # You may either store all the files in a local folder
 | 
			
		||||
      - ./storage/synapse:/data
 | 
			
		||||
      - ./docker/synapse:/config:ro
 | 
			
		||||
      # .. or you may split this between different storage points
 | 
			
		||||
      # - ./files:/data
 | 
			
		||||
      # - /path/to/ssd:/data/uploads
 | 
			
		||||
      # - /path/to/large_hdd:/data/media
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - db
 | 
			
		||||
    # In order to expose Synapse, remove one of the following, you might for
 | 
			
		||||
    # instance expose the TLS port directly:
 | 
			
		||||
    ports:
 | 
			
		||||
      - 8448:8448/tcp
 | 
			
		||||
 | 
			
		||||
  db:
 | 
			
		||||
    image: docker.io/postgres:12-alpine
 | 
			
		||||
    user: "1000"
 | 
			
		||||
    environment:
 | 
			
		||||
      - POSTGRES_USER=synapse
 | 
			
		||||
      - POSTGRES_PASSWORD=changeme
 | 
			
		||||
      # ensure the database gets created correctly
 | 
			
		||||
      # https://element-hq.github.io/synapse/latest/postgres.html#set-up-database
 | 
			
		||||
      - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
 | 
			
		||||
    volumes:
 | 
			
		||||
      # You may store the database tables in a local folder..
 | 
			
		||||
      - ./storage/postgres:/var/lib/postgresql/data
 | 
			
		||||
      # .. or store them on some high performance storage for better results
 | 
			
		||||
      # - /path/to/ssd/storage:/var/lib/postgresql/data
 | 
			
		||||
 | 
			
		||||
  element:
 | 
			
		||||
    image: docker.io/vectorim/element-web
 | 
			
		||||
    ports:
 | 
			
		||||
      - 8080:80/tcp
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./docker/element/config.json:/app/config.json:ro
 | 
			
		||||
 | 
			
		||||
  oidc:
 | 
			
		||||
    image: dexidp/dex
 | 
			
		||||
    ports:
 | 
			
		||||
      - 9001:9001
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./docker/dex:/conf:ro
 | 
			
		||||
    command: ["dex", "serve", "/conf/dex.config.yaml"]
 | 
			
		||||
							
								
								
									
										26
									
								
								docker/dex/dex.config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								docker/dex/dex.config.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
issuer: http://127.0.0.1:9001/dex
 | 
			
		||||
 | 
			
		||||
storage:
 | 
			
		||||
  type: memory
 | 
			
		||||
 | 
			
		||||
web:
 | 
			
		||||
  http: 0.0.0.0:9001
 | 
			
		||||
 | 
			
		||||
oauth2:
 | 
			
		||||
  # Automate some clicking
 | 
			
		||||
  # Note: this might actually make some tests pass that otherwise wouldn't.
 | 
			
		||||
  skipApprovalScreen: false
 | 
			
		||||
 | 
			
		||||
connectors:
 | 
			
		||||
  # Note: this might actually make some tests pass that otherwise wouldn't.
 | 
			
		||||
  - type: mockCallback
 | 
			
		||||
    id: mock
 | 
			
		||||
    name: Example
 | 
			
		||||
 | 
			
		||||
# Basic OP test suite requires two clients.
 | 
			
		||||
staticClients:
 | 
			
		||||
  - id: foo
 | 
			
		||||
    secret: bar
 | 
			
		||||
    redirectURIs:
 | 
			
		||||
      - http://localhost:3000/oidc_cb
 | 
			
		||||
    name: Project
 | 
			
		||||
							
								
								
									
										49
									
								
								docker/element/config.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								docker/element/config.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
{
 | 
			
		||||
    "default_server_config": {
 | 
			
		||||
        "m.homeserver": {
 | 
			
		||||
            "base_url": "http://localhost:8448",
 | 
			
		||||
            "server_name": "devserver"
 | 
			
		||||
        },
 | 
			
		||||
        "m.identity_server": {
 | 
			
		||||
            "base_url": "https://vector.im"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "disable_custom_urls": false,
 | 
			
		||||
    "disable_guests": false,
 | 
			
		||||
    "disable_login_language_selector": false,
 | 
			
		||||
    "disable_3pid_login": false,
 | 
			
		||||
    "brand": "Element",
 | 
			
		||||
    "integrations_ui_url": "https://scalar.vector.im/",
 | 
			
		||||
    "integrations_rest_url": "https://scalar.vector.im/api",
 | 
			
		||||
    "integrations_widgets_urls": [
 | 
			
		||||
        "https://scalar.vector.im/_matrix/integrations/v1",
 | 
			
		||||
        "https://scalar.vector.im/api",
 | 
			
		||||
        "https://scalar-staging.vector.im/_matrix/integrations/v1",
 | 
			
		||||
        "https://scalar-staging.vector.im/api",
 | 
			
		||||
        "https://scalar-staging.riot.im/scalar/api"
 | 
			
		||||
    ],
 | 
			
		||||
    "default_country_code": "GB",
 | 
			
		||||
    "show_labs_settings": false,
 | 
			
		||||
    "features": {},
 | 
			
		||||
    "default_federate": true,
 | 
			
		||||
    "default_theme": "light",
 | 
			
		||||
    "room_directory": {
 | 
			
		||||
        "servers": ["matrix.org"]
 | 
			
		||||
    },
 | 
			
		||||
    "enable_presence_by_hs_url": {
 | 
			
		||||
        "https://matrix.org": false,
 | 
			
		||||
        "https://matrix-client.matrix.org": false
 | 
			
		||||
    },
 | 
			
		||||
    "setting_defaults": {
 | 
			
		||||
        "breadcrumbs": true
 | 
			
		||||
    },
 | 
			
		||||
    "jitsi": {
 | 
			
		||||
        "preferred_domain": "meet.element.io"
 | 
			
		||||
    },
 | 
			
		||||
    "element_call": {
 | 
			
		||||
        "url": "https://call.element.io",
 | 
			
		||||
        "participant_limit": 8,
 | 
			
		||||
        "brand": "Element Call"
 | 
			
		||||
    },
 | 
			
		||||
    "map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								docker/synapse/delayed_accounts_creation.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								docker/synapse/delayed_accounts_creation.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
register_new_matrix_user -a --user admin1 --password admin1 --config /config/homeserver.yaml;
 | 
			
		||||
register_new_matrix_user --no-admin --user user1 --password user1 --config /config/homeserver.yaml;
 | 
			
		||||
							
								
								
									
										35
									
								
								docker/synapse/homeserver.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								docker/synapse/homeserver.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
# Configuration file for Synapse.
 | 
			
		||||
#
 | 
			
		||||
# This is a YAML file: see [1] for a quick introduction. Note in particular
 | 
			
		||||
# that *indentation is important*: all the elements of a list or dictionary
 | 
			
		||||
# should have the same indentation.
 | 
			
		||||
#
 | 
			
		||||
# [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html
 | 
			
		||||
#
 | 
			
		||||
# For more information on how to configure Synapse, including a complete accounting of
 | 
			
		||||
# each option, go to docs/usage/configuration/config_documentation.md or
 | 
			
		||||
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html
 | 
			
		||||
server_name: "localhost"
 | 
			
		||||
pid_file: /data/homeserver.pid
 | 
			
		||||
listeners:
 | 
			
		||||
  - port: 8448
 | 
			
		||||
    tls: false
 | 
			
		||||
    type: http
 | 
			
		||||
    x_forwarded: true
 | 
			
		||||
    resources:
 | 
			
		||||
      - names: [client, federation]
 | 
			
		||||
        compress: false
 | 
			
		||||
database:
 | 
			
		||||
  name: sqlite3
 | 
			
		||||
  args:
 | 
			
		||||
    database: /data/homeserver.db
 | 
			
		||||
log_config: "/config/localhost.log.config"
 | 
			
		||||
media_store_path: /data/media_store
 | 
			
		||||
registration_shared_secret: "+oJd9zgvkQpXN-tt;95Wy,AFAdRH+FSTg&LxUXh6ZSvwMJHT;h"
 | 
			
		||||
report_stats: false
 | 
			
		||||
macaroon_secret_key: "d@ck1QkQLxlRg^aB#c#oZeII.oxOS6E2DX;YobP^Vm#iB5pQpd"
 | 
			
		||||
form_secret: "P.uleBJUYc6AM.UOrFF1q7OKH2N5T*Ae2;fGh46;vIHLIQ#JBP"
 | 
			
		||||
signing_key_path: "/config/localhost.signing.key"
 | 
			
		||||
trusted_key_servers:
 | 
			
		||||
  - server_name: "matrix.org"
 | 
			
		||||
# vim:ft=yaml
 | 
			
		||||
							
								
								
									
										39
									
								
								docker/synapse/localhost.log.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								docker/synapse/localhost.log.config
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
version: 1
 | 
			
		||||
 | 
			
		||||
formatters:
 | 
			
		||||
  precise:
 | 
			
		||||
    
 | 
			
		||||
    format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
handlers:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  console:
 | 
			
		||||
    class: logging.StreamHandler
 | 
			
		||||
    formatter: precise
 | 
			
		||||
 | 
			
		||||
loggers:
 | 
			
		||||
    # This is just here so we can leave `loggers` in the config regardless of whether
 | 
			
		||||
    # we configure other loggers below (avoid empty yaml dict error).
 | 
			
		||||
    _placeholder:
 | 
			
		||||
        level: "INFO"
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    synapse.storage.SQL:
 | 
			
		||||
        # beware: increasing this to DEBUG will make synapse log sensitive
 | 
			
		||||
        # information such as access tokens.
 | 
			
		||||
        level: INFO
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
root:
 | 
			
		||||
    level: INFO
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    handlers: [console]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
disable_existing_loggers: false
 | 
			
		||||
							
								
								
									
										1
									
								
								docker/synapse/localhost.signing.key
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								docker/synapse/localhost.signing.key
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
ed25519 a_HEcG Q2iG1Yy5WTiZ/VIy+zHPyHCRUpqyE3qrVttGULrVQK4
 | 
			
		||||
		Reference in New Issue
	
	Block a user