Lorawan-stack: рд╣рдорд╛рд░реА рдЖрд░рдВрдн рдХрд░рдирд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдЕрдкреНрд░реИрд▓ 2020  ┬╖  31рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: TheThingsNetwork/lorawan-stack

рд╕рд╛рд░рд╛рдВрд╢

#2352 рдХреА рддрд░рд╣ред рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝реЗрдВред

рд╣рдореЗрдВ рдЗрд╕рдХреА рдЬрд╝рд░реВрд░рдд рдХреНрдпреЛрдВ рд╣реИ ?

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорд┐рддреНрд░рд╡рдд рдмрдирд╛рдПрдВ.

рд╡рд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рдХреНрдпрд╛ рд╣реИ? рдЕрдм рдЖрдк рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ?

рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЕрдиреБрднрд╛рдЧ рдирд╣реАрдВред

рдХреНрдпрд╛ рдЪреАрдЬрд╝ рдЫреВрдЯ рд░рд╣реА рд╣реИ? рдЖрдк рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЕрдиреБрднрд╛рдЧ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдФрд░ рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдХреЗ рд╕рд╛рдеред

рдЖрдк рдЗрд╕рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?

рд╣рдорд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдо рддреМрд░ рдкрд░ рд╕реАрдзреЗ рдФрд░ рдкрд╛рд▓рди рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЕрдиреБрднрд╛рдЧ рд╣реЛрдиреЗ рд╕реЗ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╕рд╛рдмрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рд╛рдВ

shared documentation

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдирдорд╕реНрддреЗ,

рдЙрдмрдВрдЯреВ рдкрд░ рдЯреАрдЯреАрдПрди 3.7 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рдлреЙрдХреНрд╕27374 рдХреА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ (https://github.com/fox27374/lora-stack) рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдореЗрд░реА рд╕реНрдерд╛рдкрдирд╛ VM рдФрд░ Ubuntu рдкрд░ рд╣реИред рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдБред "рдЯреЛрдХрди рдЕрд╕реНрд╡реАрдХреГрдд рдПрдХреНрд╕рдЪреЗрдВрдЬ"
рдкрд╣рд▓реЗ рд╣реА, рдЖрдкрдХрд╛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж,

рд╕рднреА 31 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирдорд╕реНрддреЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрдЧреВрдард╛ред рдЧрд╛рдЗрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП рдореБрдЭреЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдЦреБрд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рднреА рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХреЗрдВ?
image

@fox27374 рдХреНрдпрд╛ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ window.PAGE_DATA рдорд╛рди рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЖрдк рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рдд рдХрдВрд╕реЛрд▓ OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП?

рдирдорд╕реНрддреЗ,
рдпрд╣рд╛рдБ рд╡рд┐рдВрдбреЛ рд╣реИред PAGE_DATA рдФрд░ рд╕рд╛рде рд╣реА рд╡рд╣ рдХрдорд╛рдВрдб рдЬреЛ рдореИрдВ рд╢рдкрде рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБред рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ (рд▓реИрдм рд╕реАрдП рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдЖрдВрдХрдбрд╝реЗ
window.PAGE_DATA = { "error": { "code": 7, "message": "error:pkg/web/oauthclient:exchange (token exchange refused)", "details": [{ "@type": "type.googleapis.com/ttn.lorawan.v3.ErrorDetails", "namespace": "pkg/web/oauthclient", "name": "exchange", "message_format": "token exchange refused", "code": 7 }] } };

COMMAND
docker-compose run --rm stack is-db create-oauth-client --id console --name "Console" --owner admin --secret "SM2CE7335KDAIILCA76KETRHDQTTDAQTDJHBSL6RCOX3WFZFDZ4Q" --redirect-uri "https://lora01.ntslab.loc/console/oauth/callback" --redirect-uri "/console/oauth/callback"

рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
рдЪреАрдпрд░реНрд╕,
рдбреИрдирд┐рдпрд▓

@ Fox27374 рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ OAuth URL рдХреНрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд /token URL рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ? рдЖрдк рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ lora01.ntslab.loc рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдбреЙрдХрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдерд┐рдВрдЧреНрд╕ рд╕реНрдЯреИрдХ рдЪрд▓рд╛рддреЗ рд╣реИрдВ?

рдирдорд╕реНрддреЗ,

рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдФрд░ рдпрд╣рд╛рдВ рдореЗрд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╕рд╛рдордЧреНрд░реА рдЕрднреА рддрдХ рд╕рдордЭрджрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рд╕реЗрдЯрдЕрдк рд╣реИред рдореИрдВ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╕рд░реНрд╡рд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ :)

рд╣рд╛рдВ, рдореИрдВ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЙрдХрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреАрдЯреАрдПрди рд╕реНрдЯреИрдХ рдЪрд▓рд╛рддрд╛ рд╣реВрдВред lora01.ntslab.loc рдХреЛ рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд╛рдо рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

/рдЯреЛрдХрди рдпреВрдЖрд░рдПрд▓ рд╣реИ:
рдЯреЛрдХрди-рдпреВрдЖрд░рдПрд▓: ' https://lora01.ntslab.loc/oauth/token '

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕реАрдзреЗ docker-compose.yml рдФрд░ ttn-lw-stack.yml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди ( start.sh ) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБред

рдкрд╣рд▓реЗ рд╣реА, рдЖрдкрдХрд╛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж,
рдбреИрдирд┐рдпрд▓

рд╣рд╛рдп @ рдлреЙрдХреНрд╕27374

рд╣рд╛рдВ, рдореИрдВ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЙрдХрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреАрдЯреАрдПрди рд╕реНрдЯреИрдХ рдЪрд▓рд╛рддрд╛ рд╣реВрдВред lora01.ntslab.loc рдХреЛ рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд╛рдо рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рдЖрдкрдХреА рдорд╢реАрди рдХреА /etc/hosts рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣реИ? рдпрд╣ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрдЯреИрдХ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреА рдЬрд╛ рд░рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдк рдЗрд╕реЗ рдирд┐рдореНрди рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

$ docker-compose stack exec nc -z lora01.ntslab.loc

рдЖрдкрдХреЛ nc: bad address 'lora01.ntslab.loc' рдХреА рддрд░реНрдЬ рдкрд░ рдХреБрдЫ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ docker-compose.yaml рдореЗрдВ extra_hosts рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:

# docker-compose.yaml
services:
  # ...
  stack:
    # ...
    extra_hosts:
      - "lora01.ntslab.loc:YOUR_IP_ADDRESS"
    # ...

рдФрд░ docker-compose up -d . рдХреЗ рд╕рд╛рде рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ

рд╣реЛрд╕реНрдЯрдирд╛рдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рддрдм рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред (рд▓реЗрдХрд┐рди, рдЕрдЧрд░ YOUR_IP_ADDRESS рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ 127.0.0.1 , рддреЛ рдлрд┐рд░ рднреА рдЖрдкрдХреЛ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВ)

рдирдорд╕реНрддреЗ @neoaggelos
рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЖрдИрдкреА/рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреЛ рд╕реАрдзреЗ DNS рд╕рд░реНрд╡рд░ рдкрд░ рд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдореИрдВрдиреЗ docker-compose.yml рдореЗрдВ "extra_hosts" рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реАред
рдореБрдЭреЗ рдбрд░ рд╣реИ, рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред

рдореИрдВрдиреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдРрд╢ рд╢реЗрд▓ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдбреАрдПрдирдПрд╕ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХреА:

$ nslookup lora01.ntslab.loc
Name:      lora01.ntslab.loc
Address 1: 172.24.89.120 lora01.ntslab.loc

рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рдж рдЯреЛрдХрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рдиреЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ , рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдУрде рдЯреЛрдХрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рд╡реНрдпрд╕реНрдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ....
рдзрдиреНрдпрд╡рд╛рдж

рд╡реИрд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐рд╕реА рдФрд░ рдХреЛ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдирдорд╕реНрддреЗ @neoaggelos
рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЖрдИрдкреА/рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреЛ рд╕реАрдзреЗ DNS рд╕рд░реНрд╡рд░ рдкрд░ рд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдореИрдВрдиреЗ docker-compose.yml рдореЗрдВ "extra_hosts" рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реАред

рд╣рдореНрдо, рдЙрдЪрд┐рдд DNS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ extra_hosts рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдбрд░ рд╣реИ, рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред

рдореИрдВрдиреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдРрд╢ рд╢реЗрд▓ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдбреАрдПрдирдПрд╕ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХреА:

$ nslookup lora01.ntslab.loc
Name:      lora01.ntslab.loc
Address 1: 172.24.89.120 lora01.ntslab.loc

172.24.89.120 рдбреЙрдХрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬреЛ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░рдг рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рдж рдЯреЛрдХрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рдиреЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ , рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдУрде рдЯреЛрдХрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рд╡реНрдпрд╕реНрдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ....
рдзрдиреНрдпрд╡рд╛рдж

рдЕрдкрдиреА рдХреБрдХреАрдЬрд╝ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рд╕реНрд╡рдЪреНрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рддреНрд░ рд╕реЗ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рд╛рде рд╣реА, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рд╕реНрдЯреИрдХ cat /var/run/secrets/cert.pem рд╕реЗ рдареАрдХ рд╕реЗ рдкрдврд╝рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░ рдПрдХ рдЦреЛрд▓ рд╕реЗ cat /var/run/secrets/key.pem рдЙрд╕ рдПрдХ рдХреЛ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рд╖рдп рд╕реЗ рдкрд░реЗ; рдХреНрдпрд╛ рдЖрдкрдиреЗ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рд╕реНрдЯреИрдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рд╕рдлрд▓ рд╣реБрдП?

рдирдорд╕реНрддреЗ,

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ 172.24.89.120 рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рд╣реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ рд╣реИред рдбреЙрдХрд░ рдкрддреЗ 172.9.0.X рд╣реИрдВ

рдореИрдВ рдирд┐рдЬреА рдореЛрдб рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреЛрдИ рдХреБрдХреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдХреБрдВрдЬреА рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ "thethings" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдкрдардиреАрдп рд╣реИ:

/ $ whoami
thethings

/ $ cat /var/run/secrets/key.pem 
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC7IjZoBd2Mu4Ev
AYDrEh6mBWYw5cRDA02F10OQpbQbm6RigFbODM2owGRyCkkZfAUL2VV9xl5TzdMl
I6IecaA7/F7TpciuiJHmnfRVAbDlPI6EJYybdrU7tmfdeWc/ThuVVNolJFUeap+T
OIzv9MkGbBAF19ju4PJel6z3ef+NUhc5LKfjVQZeieQULX2b9+Hpd4ySdR2Nfzdt
......

рдореИрдВ рд╕реЗрдЯрдЕрдк рдХреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд░рд╣реВрдВрдЧрд╛ред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ 172.24.89.120 рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рд╣реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ рд╣реИред рдбреЙрдХрд░ рдкрддреЗ 172.9.0.X рд╣реИрдВ

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕реЗ curl https://lora01.ntslab.loc рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реИ?

рдирдорд╕реНрддреЗ,

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдорд┐рд▓ рдЧрдпрд╛ред рдХрд░реНрд▓ рд╕рдВрдХреЗрдд рдПрдХ рдЕрдЪреНрдЫрд╛ рдерд╛ред рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛, рдХрд┐ ca.pem рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрдЯреЛрд░ рдореЗрдВ рдирд╣реАрдВ рдерд╛:

/ # curl https://lora01.ntslab.loc
curl: (60) SSL certificate problem: self signed certificate in certificate chain

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ ca.pem рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ /usr/local/share/ca-certificates/ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛

/ $ ls -la /usr/local/share/ca-certificates/ca.pem 
-rw-r--r--    1 thething thething      1310 Apr 14 11:36 /usr/local/share/ca-certificates/ca.pem

рдЗрд╕реЗ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡реЙрд▓реНрдпреВрдо рд╕реЗрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдХрд░:

volumes:
      - "./data/blob:/srv/ttn-lorawan/public/blob"
      - "./config/stack:/config:ro"
      - "./config/stack/cert/ca.pem:/usr/local/share/ca-certificates/ca.pem"

рдЕрдм рдореИрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рдФрд░ рд╕рднреА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИрдВред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!

рдХреНрдпрд╛ рдпрд╣ TTN рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛/рдЗрдЪреНрдЫрд┐рдд рддрд░реАрдХрд╛ рд╣реИ?

рдмрд╣реБрдд рдЬрд▓реНрджреА рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрде рдЯреЛрдХрди рдЕрднреА рднреА рдбреАрдмреА рдореЗрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╕рдмрдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ ca.pem рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрдЯреЛрд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

docker exec -it --user root ttn-server_stack_1 /usr/sbin/update-ca-certificates

рдлрд┐рд░ рд╢рдкрде рдЧреНрд░рд╛рд╣рдХ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рдбреАрдмреА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

@ Fox27374 рдмрдврд╝рд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдорд┐рд▓ рдЧрдпрд╛ред рд╕реНрд╡рдЪреНрдЫ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рд╣реИред

рд╕реНрдЯреИрдХ рдЖрдкрдХреЗ рд╕реАрдП рдХреЗ рд╕рд╛рде TTN_LW_TLS_ROOT_CA (рдпрд╛ tls.root-ca ), рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИред рджреЗрдЦреЗрдВ https://thethingsstack.io/v3.7.0/reference/configuration/the-things-stack/

@johanstokking : рдореИрдВрдиреЗ docker-compose.yml рдореЗрдВ рдлреЛрд▓реЛрдЗрдВрдЧ рдЬреЛрдбрд╝рд╛ рд╣реИ

......
    secrets:
      - cert.pem
      - key.pem
      - ca.pem

secrets:
  cert.pem:
    file: config/stack/cert/cert.pem
  key.pem:
    file: config/stack/cert/key.pem
  ca.pem:
    file: config/stack/cert/ca.pem

рдЗрд╕ рддрд░рд╣, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ /run/secrets рдФрд░ /var/run/secrets рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдореИрдВрдиреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЗрд╕ рдкреНрд░рддреНрдпрдХреНрд╖рддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреАред

рдореИрдВрдиреЗ рдЬреЛрдбрд╝рд╛
TTN_LW_TLS_ROOT_CA: "/var/run/secrets/ca.pem"
docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВред рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ ttn-lw-stack.yml рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛:

tls:
  source: "file"
  root-ca: "/var/run/secrets/ca.pem"
  certificate: "/var/run/secrets/cert.pem"
  key: "/var/run/secrets/key.pem"

рдЗрдзрд░ рднреА рдРрд╕рд╛ рд╣реА рд╣реИред рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдУрде рдХреНрд▓рд╛рдЗрдВрдЯ рдУрдПрд╕ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ рдЬреИрд╕реЗ рд╣реА рдореИрдВ ca.pem рдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж, рдбреЗрдирд┐рдпрд▓

рд╕реАрд╕реА @adriansmares

рдирдорд╕реНрддреЗ, рдпрд╣рд╛рдБ рдХреЛрдИ рдЦрдмрд░ рд╣реИ? рдореИрдВрдиреЗ рд╕реНрдЯреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖред

@ Fox27374 рдХреНрдпрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

$ curl -cacert /var/run/secrets/ca.pem https://lora01.ntslab.loc

@adriansmares рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рджреЛ рдЪреАрдЬреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ;

  1. рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддреНрд░реБрдЯрд┐ рдХрд╛рд░рдг рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ net рддреНрд░реБрдЯрд┐ рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ stdlib
  2. рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдо OAuth рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ tls.root-ca рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ,

рдореБрдЭреЗ рд╡рд╣реА 403 рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдПрдХ рд╡реИрдЧреНрд░рд╛рдВрдЯ рдмреЙрдХреНрд╕ (рд╡рд░реНрдЪреБрдЕрд▓ рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде) рдХреЗ рднреАрддрд░ рдбреЙрдХрдЯрд░ рдХреЗ рд╕рд╛рде рдЯреАрдЯреАрдПрди рд╕реНрдЯреИрдХ v3 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред - рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рд░реЗрд╕рд┐рдкреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ред

рдореИрдВрдиреЗ рдбреАрдПрдирдПрд╕ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХрдИ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

  • рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  • TTN рд╕реНрдЯреИрдХ рджреНрд╡рд╛рд░рд╛ VPS рдкрд░ letsencrypt рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рдХреБрдЫ рдореМрдЬреВрджрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╕рднреА insecure рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ root-ca рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдПрдХ рдкреНрд░рд╢реНрди рд╣рд╛рд▓рд╛рдВрдХрд┐: рдЖрдкрдХреЗ рдЬреНрдЮрд╛рди рд╕реЗ, рдХреНрдпрд╛ рдЗрд╕реЗ рдЯреАрдПрд▓рдПрд╕ рдХреЗ рдмрд┐рдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рд╡реИрдЧреНрд░рд╛рдВрдЯ рдмреЙрдХреНрд╕ рдХреЗ рднреАрддрд░ рджреЗрд╡ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рд╕рдВрдХреЗрдд рджреЗрдВрдЧреЗ?

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рд╡реАрдкреАрдПрд╕ рдкрд░ рдпрд╣ letsencrypt рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣реЛрдЧрд╛ред

рдзрдиреНрдпрд╡рд╛рджред

c/shared рдЬреЛрдбрд╝рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдХреЙрдиреНрдлрд┐рдЧ рдЪреАрдЬ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рд╣рд╛рдп, рджреЗрд░ рд╕реЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореИрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд░реНрд▓ рдХреЗрд╡рд▓ --cacert рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ ca.pem рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯрд╕реНрдЯреЗрдб рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ:

/ $ whoami
thethings
/ $ curl https://lora01.ntslab.loc
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
/ $ curl --cacert /var/run/secrets/ca.pem https://lora01.ntslab.loc
/ $ 

рдХреГрдкрдпрд╛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ OAuth рдХреНрд▓рд╛рдЗрдВрдЯ TLS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИ

рдпрджрд┐ рдЖрдк рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рдордиреЗ nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ nginx рдХреЛ рд╕рднреА ssl/tls рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ nginx рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИрдВ:

nginx.conf

stream {
    include stream_conf.d/*.conf;
}

stream_conf.d/mqtt.conf

log_format mqtt '$remote_addr [$time_local] $protocol $status $bytes_received '
                '$bytes_sent $upstream_addr';

upstream ttn1 {
    server stack-ip:1881;
    zone tcp_mem 64k;
}
upstream ttn2 {
    server stack-ip:1882;
    zone tcp_mem 64k;
}
upstream ttn3 {
    server stack-ip:1883;
    zone tcp_mem 64k;
}

server {
    listen 8881 ssl; # MQTT secure port
    preread_buffer_size 1k;

    ssl_certificate /etc/letsencrypt/live/FQDN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/FQDN/privkey.pem; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_session_cache   shared:SSL:128m; # 128MB ~= 500k sessions
    ssl_session_tickets on;
    ssl_session_timeout 8h;

    proxy_pass ttn1;
    proxy_connect_timeout 1s;
}

server {
    listen 8882 ssl; # MQTT secure port
    preread_buffer_size 1k;

    ssl_certificate /etc/letsencrypt/live/FQDN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/FQDN/privkey.pem; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_session_cache   shared:SSL:128m; # 128MB ~= 500k sessions
    ssl_session_tickets on;
    ssl_session_timeout 8h;

    proxy_pass ttn2;
    proxy_connect_timeout 1s;


server {
    listen 8883 ssl; # MQTT secure port
    preread_buffer_size 1k;

    ssl_certificate /etc/letsencrypt/live/FQDN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/FQDN/privkey.pem; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_session_cache   shared:SSL:128m; # 128MB ~= 500k sessions
    ssl_session_tickets on;
    ssl_session_timeout 8h;

    proxy_pass ttn3;
    proxy_connect_timeout 1s;
}

server {
    listen 1881; # MQTT secure port
    preread_buffer_size 1k;

    proxy_pass ttn1;
    proxy_connect_timeout 1s;
}

server {
    listen 1882; # MQTT secure port
    preread_buffer_size 1k;

    proxy_pass ttn2;
    proxy_connect_timeout 1s;
}

server {
    listen 1883; # MQTT secure port
    preread_buffer_size 1k;

    proxy_pass ttn3;
    proxy_connect_timeout 1s;
}

рдЖрдкрдХреЛ рд╕рднреА рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдкреЛрд░реНрдЯ = 1884, 1885, 1887):

server {
        server_name FQDN;

        location / {
                proxy_pass      http://stack-ip:PORT;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Host $server_name;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_buffering off;
        }

       listen [::]:PORT ipv6only=on; # managed by Certbot
       listen PORT; # managed by Certbot
}

рдФрд░ рдпрд╣ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд▓рд┐рдП (рдкреЛрд░реНрдЯ/рдкреЛрд░реНрдЯреНрд╕рдПрд╕рдПрд▓ = 1885/443, 1884/8884, 1887/8887):

server {

        server_name FQDN;

        location / {
                proxy_pass      http://stack-ip:PORT;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Host $server_name;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_buffering off;
        }

        listen [::]:PORTSSL ssl ipv6only=on; # managed by Certbot
        listen PORTSSL ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/FQDN/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/FQDN/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @wasn-eu!

рдпрд╣ #1760 рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реИред

рдирдорд╕реНрддреЗ,

рдЙрдмрдВрдЯреВ рдкрд░ рдЯреАрдЯреАрдПрди 3.7 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рдлреЙрдХреНрд╕27374 рдХреА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ (https://github.com/fox27374/lora-stack) рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдореЗрд░реА рд╕реНрдерд╛рдкрдирд╛ VM рдФрд░ Ubuntu рдкрд░ рд╣реИред рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдБред "рдЯреЛрдХрди рдЕрд╕реНрд╡реАрдХреГрдд рдПрдХреНрд╕рдЪреЗрдВрдЬ"
рдкрд╣рд▓реЗ рд╣реА, рдЖрдкрдХрд╛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж,

рд╣рд╛рдп @ramampiandra ,

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╕реНрд▓реИрдХ рдЪреИрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • TLS рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░: cert.pem
  • рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рдЬреА рдХреБрдВрдЬреА: key.pem
  • CA рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд┐рд╕рдиреЗ cert.pem рдЬрд╛рд░реА рдХрд┐рдпрд╛: ca.pem

рдХреГрдкрдпрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рд╣реА рд╣реИрдВ:

рд╕рд░реНрдЯ.рдкреЗрдо

openssl x509 -in cert.pem -text -noout | grep -A 1 Identifier
            X509v3 Subject Key Identifier:
                26:78:63:90:E7:1C:09:B7:DA:B3:7D:81:F0:DE:47:6B:AE:16:58:79
            X509v3 Authority Key Identifier:
                keyid:86:32:F5:56:44:21:EC:E3:2A:D9:5F:6E:87:82:7A:67:C2:F1:77:E8

рд╕реАрдП.рдкреАрдИрдПрдо

openssl x509 -in ca.pem -text -noout | grep -A 1 Identifier
            X509v3 Subject Key Identifier:
                86:32:F5:56:44:21:EC:E3:2A:D9:5F:6E:87:82:7A:67:C2:F1:77:E8

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ cert.pem рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреБрдВрдЬреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ca.pem рдореЗрдВ рд╡рд┐рд╖рдп рдХреБрдВрдЬреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИред

рд╕реНрдЯреИрдХ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рд╕рднреА рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдКрдкрд░ рд╣реИрдВ, рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ (рдЕрдкрдиреЗ TTN рдХрдВрдЯреЗрдирд░ рдХреЗ рдирд╛рдо рдкрд░ "ttn-server_stack_1" рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ):
docker exec -it --user root ttn-server_stack_1 /usr/sbin/update-ca-certificates
рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░ ca.pem рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕реАрдзреЗ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ:

docker-compose exec stack "/bin/ash"
curl https://YOURSERVER.YOUR.DOMAIN

рдЖрдкрдХреЛ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдпрд╛ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред

рдЖрд╢рд╛ рд╣реИ рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛,
рдЪрд┐рдпрд░реНрд╕

рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдУрдПрде рдкреНрд░рд╡рд╛рд╣ рджреНрд╡рд╛рд░рд╛ рдЯреАрдПрд▓рдПрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░) рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЯреЛрдХрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЖрдЬ рдмрд╛рдж рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред

@kschiffer рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛, рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдмрд╕ рдореБрдЭреЗ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд░рд╣реЗрдВ рддрд╛рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХреВрдВред

рдирдорд╕реНрддреЗ! рдЗрд╕реЗ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ?

@dgraposo рдЗрд╕реЗ 3.8.1 . рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ "рдЯреЛрдХрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рдиреЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛" рдореБрджреНрджреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ # 2511 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬрд┐рд╕реЗ рдЖрдЧреЗ # 2521 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдХрд╛рд░рдг рдерд╛ред

рдпрд╣ рдореБрджреНрджрд╛ рдЕрдм рдЕрдкрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирддреЗ рд╣реИрдВ рддреЛ рдЙрдЪрд┐рдд рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kschiffer picture kschiffer  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adamsondelacruz picture adamsondelacruz  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MatteMoveSRL picture MatteMoveSRL  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

johanstokking picture johanstokking  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

htdvisser picture htdvisser  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ