aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 743d2db13c3bfda3ec3c3da8212de11f745c2327 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# coinos-server

Coinos is a bitcoin wallet app that supports payments over the <a href="https://bitcoin.org">bitcoin</a>, <a href="https://blockstream.com/liquid/">liquid</a> and <a href="http://lightning.network/">lightning</a> networks. Try it out at <a href="https://coinos.io/">coinos.io</a>.

This repository contains the code for the backend API server which is implemented as a NodeJS application. The code for the frontend UI is tracked separately <a href="https://github.com/asoltys/coinos.io">here</a>.

## Install

The follow commands will set up bitcoin, liquid and lightning nodes in regtest mode, along with a coinos app server, database, and front end UI. You'll need to have <a href="https://docs.docker.com/get-docker/">docker</a> installed as a pre-requisite.

```bash
git clone https://github.com/coinos/coinos-server
cd coinos-server
cp -rf sampleconfig ./config
sudo chown $(id -u):$(id -g) config/liquid
sudo chown $(id -u):$(id -g) config/bitcoin
cp .env.sample .env
cp fx.sample fx
docker network create net --gateway 172.18.0.1 --subnet 172.18.0.0/16
docker run -it -v $(pwd):/app --entrypoint pnpm asoltys/coinos-server i
docker-compose up -d
docker exec -i maria mysql -u root -ppassword < db/schema.sql   
docker exec -it bitcoin bitcoin-cli createwallet coinos
docker exec -it bitcoin bitcoin-cli rescanblockchain
docker exec -it bitcoin bitcoin-cli generatetoaddress 500 $(docker exec -it bitcoin bitcoin-cli getnewaddress "" "p2sh-segwit")
docker exec -it liquid elements-cli createwallet coinos
docker exec -it liquid elements-cli rescanblockchain
docker exec -it liquid elements-cli sendtoaddress AzpsKhC6xE9FEK4aWAzMnbvueMLiSa5ym1xpuYogFkHzWgMHSt8B79aNNbFppQzCSQ2yZ9E4nL6RQJU7 1000000
docker exec -it liquid elements-cli generatetoaddress 1 AzpsKhC6xE9FEK4aWAzMnbvueMLiSa5ym1xpuYogFkHzWgMHSt8B79aNNbFppQzCSQ2yZ9E4nL6RQJU7
docker exec -it lnd lncli create # set password to "password"
sed -i "s/# wallet/wallet/g" config/lnd/lnd.conf
CERT=$(sudo base64 config/lnd/tls.cert | tr -d '\n') 
sed -i "s/LS0tL.*\"/$CERT\"/g" config/index.js
MACAROON=$(sudo base64 config/lnd/data/chain/bitcoin/regtest/admin.macaroon | tr -d '\n') 
sed -i "s/AgED.*\"/$MACAROON\"/g" config/index.js
```

After successful creation of all docker containers coinos ui will be available at http://localhost:8085 and coinos server will be available at http://localhost:3119

### Setup Lightning Channels

    docker exec -it cl lightning-cli getinfo
    docker exec -it lnd lncli --network=regtest --chain=bitcoin connect 029ba19ec5f65f82b1952fd535a86ff136ccc67ff7f91e19c3fcbc83a5224adaee@cl:9735
    docker exec -it lnd lncli --network=regtest --chain=bitcoin openchannel 029ba19ec5f65f82b1952fd535a86ff136ccc67ff7f91e19c3fcbc83a5224adaee 10000000
    docker exec -it bitcoin bitcoin-cli generatetoaddress 10 $(docker exec -it bitcoin bitcoin-cli getnewaddress "" "legacy")

### License

This code is [licensed].  Coinos is free for personal use.  Anyone can fork as long as it stays AGPLv3.  

To purchase a commercial license or to inquire about customized, managed instances - please reach out to us at [[email protected]]


[Config changes]:(#config-changes)
[config/lnd/lnd.conf]:./sampleconfig/lnd/lnd.conf
[pwd file]:./sampleconfig/lnd/pwd
[licensed]:./LICENSE.md
[[email protected]]:mailto:[email protected]
[generate some BTC]:./doc/fund-server-bitcoin-cli.md
class="p">{ "404": "404", "pageNotFound": "Page non trouvée." }, "about": { "header": "À Propos", "p1": "<strong>coinos</strong> est un portefeuille, point de vente, marché d'e-commerce et plateforme d'échange de bitcoin <strong>open source</strong>. Development a commencé en Vancouver le septembre de 2012 pour donner aux marchands du coin un façon pratique d'accepter des paiements en bitcoin.", "p2": "Il a eu plus de fonctions au fil des ans pour satisfaire une grande variété de cas d'utilisation dans le but de pouvoir utiliser bitcoin rapidement, à bas prix, et en sécurité aussi façile que possible pour n'importe qui.", "p3": "Tout le monde peux télécharger le code source et héberger leur propre instance de la plateforme soutenue par leur propres nœuds de bitcoin, liquid ou lightning, ou contactez-nous et nous l'installerons pour vous avec plaisir.", "locations": { "header": "Établissements", "description": "Il y a des entreprises qui acceptent bitcoin utilisant le point de vente coinos. Si vous utilisez notre appli, s'il vous plait <a href=\"mailto:[email protected]\" class=\"underline underline-offset-4\">fais-le-nous savoir!</a>" }, "team": { "header": "L'Équipe", "adam": { "name": "Adam Soltys", "position": "Officier Technique Principal", "bio": "Adam est développeur web et passionné de bitcoin. Il croit que l'argent sûr est la clé pour augmenter la prospérité planétaire. Il habite en Vancouver de Nord avec sa femme Chelsea et deux enfants." }, "secondl1ght": { "name": "secondl1ght", "position": "Développeur Web", "bio": "Secondl1ght est un développeur web autodidacte. Il a découvert bitcoin et quitté son job de monnaie fiduciaire pour développer bitcoin à temps plein. Il contribue aux projets open source, est défenseur de la vie privée, et il aime la liberté." }, "karnage": { "name": "Karnage", "position": "Designer des Produits", "bio": "Ma mission est d'aider les fondateurs des start-ups à réussir. Je crée des produits pour achever cette mission. Designe des produits pixel-parfait. Aie-l'expédié." }, "shauna": { "name": "Shauna", "position": "Gestion & Marketing", "bio": "Gestion de projets et strategie. Touche-à-tout. Peut toujours trouver le temps pour racontrer pour café." }, "cole": { "name": "Cole Goodwin", "position": "Professionel de Bitcoin", "bio": "Cole est un professionel de bitcoin diplômé et un homme motivé avec passion pour la liberté. Il a découvert bitcoin en 2016 et l'a etudié en détail. Maintenant, il veux introduire le réseau Lightning à autant d'utilisateurs que possible." }, "john": { "name": "John Barratt", "position": "Développeur Web Full-Stack", "bio": "Quand il ne programme pas, vous pouvez trouver John en forêt randonnant sur les sentiers de Colombie-Britannique." } } }, "error": { "header": "Erreur", "message": "S'il vous plait réessayez ou contactez l'assistance.", "signIn": "Vous devez connecter pour continuer." }, "faq": { "header": "FAQ", "cost": { "question": "Quel est le coût?", "answer": "coinos est gratuit à utiliser. Vous payez seulment 1% quand vous convertissez vos fonds entre bitcoin, Liquid et Lightning. Comparez-ça aux frais typiques 3% des cartes de crédit." }, "compatibility": { "question": "Est-ce que j'ai besoin de logiciel ou d'appareil special ?", "answer": "Non. coinos est un site Web, vous pouvez donc l'utiliser sur n'importe quel appareil tant que vous aves un connexion d'Internet. La plupart des marchands l'utilise sur un téléphone ou une tablette." }, "safety": { "question": "Sont mes fonds saufs ?", "answer": "Vos fonds sont entreposés sur notre serveur sécurisé, mais nous recommandons que vous les retiriez vers votre propre entreposage pour les sauvegarder à long terme." } }, "footer": { "followUs": "Suivez-Nous", "twitter": "Twitter", "github": "GitHub", "company": "Entreprise", "telegram": "Telegram", "support": "Assistance", "jobs": "Jobs", "news": "Nouvelles" }, "howItWorks": { "header": "Comment cela Fonctionne", "step1": { "header": "1. Créez votre compte", "description": "Un nom d'utilateur et mot de passe est tout ce dont vous avez besoin pour commencer." }, "step2": { "header": "2. Demande pour des paiements", "description": "Comme vous faisiez normalement, mais avec bitcoin." }, "step3": { "header": "3. C'est tout!", "description": "Vous pouvez convertir en monnaie local n'importe quand." } }, "landing": { "header_before_icon": "Le", "header_with_icon": "façon", "header_after_icon": "le plus façile d'accepter bitcoin dans votre magasin.", "subheader": "Agrandir votre clientèle et chiffre d'affaires en acceptant bitcoin avec un point de vente façile à utiliser et géré. Logiciel et matériel informatique non obligatoire.", "info1": { "title": "Paiements instantanés avec Lightning", "description": "Le moment où votre client envoie un paiment, c'est là. Vous ne devez pas attendre les décisions des banques ou vous inquiéter pour des rejets de débit. Décisions instantanées, en secondes. Dites au revoir aux frais de transactions de 3% des cartes de crédit." }, "info2": { "title": "Simple à utiliser, en garde par défaut", "description1": "Juste entrer une quantité, partager le code QR et c'est tout!", "description2": "Tes comptes sont en garde par défaut, qui élimine le nécessité de comprendre comment bitcoin/lightning fonctionnent. Nous réalisons le plus gros du travail pour que vous puissiez vous concentrer sur votre entreprise.", "description3": "Vous avez toujours l'option de <span class=\"underline undeline-offset-4\">gérer</span> vos clés." }, "info3": { "title": "Personalisez-le comme vous voulez", "description": "Personalisez votre point de vente, ou utilisez les réglages par défaut - c'est votre chois." } }, "login": { "username": "Nom d'utilisateur", "password": "Mot de passe", "email": "Courriel", "passwordRecommendation": "Nous recommendons un mot de passe long et aléatoire, généré par un gestionnaire de mots de passe.", "forgotUserOrPassword": "Oublié votre nom d'utilisateur ou mot de passe ?", "haveAccount": "Avez-vous déjà un compte ?", "noAccount": "Pas encore de compte ?", "register": "Enregistrer", "signIn": "Connexion", "failed": "Echec de Connexion", "optional": "Optionnel", "token": "Jeton 2FA" }, "nav": { "startInSeconds": "Commence en Secondes", "account": "Compte", "signIn": "Connexion", "signOut": "Déconnexion", "dashboard": "Tableau de bord", "settings": "Préférences", "support": "Assistance", "profile": "Profil" }, "newSiteHeader": "Bienvenue sur <a href=\"/news\" class=\"underline underline-offset-4 text-black hover:opacity-80\">coinos nouveau et amélioré</a>, focalisé sur les marchants! Vous cherchez l'ancien coinos? Visitez <a href=\"https://classic.coinos.io\" class=\"underline underline-offset-4 text-black hover:opacity-80\">classic.coinos.io</a>.", "invoice": { "addTip": "Ajoutez un pourboire", "addTipq": "Ajouter un pourboire?", "done": "Fini", "paymentSuccessful": "Paiement réussi!", "invoice": "Facture", "total": "Total", "tip": "Pourboire" }, "jobs": { "header": "Emplois", "subheader": "Postes disponibles actuels", "pitch1": "coinos recherche pour des développeurs pour joindre notre équipe croissant (temps plein ou partiel, télétravail OK)", "pitch2": "Avez-vous hâte de travailler sur bitcoin open source? Regardez sur nos dépôts sur", "github": "GitHub", "pitch3": "Si vous pensez que vous pouvez exercer une influence positive, nous voulons que vous contribuez. Envoyer votre CV à" }, "user": { "follow": "Suivre", "remove": "Enlève", "scanToPayBTC": "Scanner pour payer avec bitcoin", "dashboard": { "dashboard": "Tableau de bord", "accountBalance": "Solde", "bitcoinPrice": "Prix de bitcoin:", "conversionFeeWarning": "Il y a des frais de 1% pour convertir entre bitcoin, Liquid et Lightning.", "dataFromBinance": "Données de <span class=\"text-black\">Binance</span>.", "fetchingRate": "cherchant taut de change...", "optionalNote": "Note (optionel)", "send": "Envoie", "withdraw": "Retire", "go": "Allez", "receive": "Reçois un Paiement", "deposit": "Déposer", "voucher": "Bon" }, "receive": { "lessThan1BTCWarning": "S'il vous plaît utilisez moins d'un bitcoin.", "showQR": "Voire le QR code" }, "settings": { "header": "Préférences", "ACCOUNT": "COMPTE", "POINT_OF_SALE": "POINT DE VENTE", "SECURITY": "SÉCURITÉ", "locale": "Langue", "username": "Nom d'Utilisateur", "email": "Courriel", "newPassword": "Nouveau Mot de Passe", "emailNotifications": "Notifications par Courriel", "emailNotificationsDescription": "Nous pouvons vous notifier par courriel quand votre compte change ou quand vous recevez des paiements", "smsNotifications": "Notifications par SMS", "smsNotificationsDescription": "Nous vous envoyons des notifications par texte quand c'est activé", "theme": "Thème", "themeDescription": "Sélectionnez des thèmes dèfauts.", "localCurrency": "Monnaie Local", "btcUnit": "Voire bitcoin en:", "bitcoin": "bitcoin", "satoshis": "Satoshis", "securityPIN": "NIP de Sécurité", "securityPINDescription": "Choisir un NIP de sécurité qui sera necessaire pour ouvrir tes préférences et pour envoyer des paiements sortants.", "setPIN": "Choisir Votre NIP", "autoLock": "Auto-Verouillage", "autoLockDescription": "Ta conte activera une mode sécuritaire après une durée spécifiée:", "twofa": "Authentification à 2 Facteurs", "twofaDescription": "Ajoutez un autre niveau de sécurité par activez l'authentication à deux facteurs.", "twofaSetup": "Activer A2F", "bannerImage": "Image de Bandeau", "profileImage": "Image de Profil", "oneTimeCode": "Entrez mot de passe à usage unique", "accountId": "Secret de conte", "twofaDisable": "Désactivez A2F", "about": "À Propos", "aboutPlaceholder": "Un description court de vous ou votre entreprise (adresse, bio, etc.)", "select": "Choisir", "verifyPIN": "Verifiez votre NIP", "enablePIN": "Activer NIP", "disablePIN": "Désactiver NIP" }, "support": { "header": "Assistance", "email": "Courriel", "accountName": "Nom d'utilisateur", "message": "Message", "send": "Envoie" }, "bitcoin": "Bitcoin", "lightning": "Lightning", "invoice": "Facture", "unfollow": "Ne plus suivre", "following": "Vous suivez", "this": "Cette", "lightningAddress": "adresse de Lightning", "likeAnEmail": "est comme un courriel pour bitcoin. Vous pouvez le publier sur votre site web ou votre carte de visite et l'utiliser plusieurs fois.", "send": { "contacts": "Contacts", "scan": "Scannez", "paste": "Collez", "next": "Prochain", "placeholder": "Collez une adresse de bitcoin, facture de lightning ou nom d'utilisateur coinos" } }, "transactions": { "header": "Histoire des Transactions", "AMOUNT": "QUANTITÉ", "TYPE": "TYPE", "TIME": "HEURE", "sent": "Envoyé", "received": "Recevé", "empty": "Vous n'avez pas des transactions.", "send": "Envoie", "next": "Prochain", "sendersChoice": "Choix d'envoyeur", "sendTo": "Envoie à", "to": "à", "pay": "Payez", "requesting": "demande", "sentInvoiceTo": "a envoyé une facture à", "sentRequestTo": "a envoyé une demande à", "pleasePay": "S'il vous plaît payez", "day": "Jour", "week": "Semaine", "month": "Mois", "all": "Tout", "export": "Exportez", "invoice": "Facture", "readyToPay": "est prêt à payer", "describeOrder": "Utiliser ce champ pour décrire votre commande", "requestAnInvoice": "Demandez une facture", "submit": "Soumettre", "isRequesting": "demande", "invoiceFrom": "Facture de", "awaiting": "Attendez pour", "tapAnywhere": "Tapez n'importe où", "from": "de", "redeem": "Échangez", "redeemed": "Déjà échangé", "redeemedBy": "Échangé par", "sendMessage": "Message" }, "news": { "header": "Nouvelles", "subheader": "Dernières Informations", "update1": "" } }